1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 00:05:16 +00:00

Get latest posts from server

This commit is contained in:
2019-05-10 19:15:11 +02:00
parent 8d188373ce
commit ddbea1727b
9 changed files with 301 additions and 3 deletions

View File

@ -1,3 +1,10 @@
import 'package:comunic/helpers/posts_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/lists/posts_list.dart';
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/ui/screens/conversation_screen.dart';
import 'package:comunic/ui/tiles/post_tile.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart';
@ -11,10 +18,59 @@ class NewestPostsScreen extends StatefulWidget {
}
class _NewestPostsScreenState extends State<NewestPostsScreen> {
// Helpers
final PostsHelper _postsHelper = PostsHelper();
final UsersHelper _usersHelper = UsersHelper();
// Class members
PostsList _list;
UsersList _users;
ErrorLevel _error = ErrorLevel.NONE;
set error(ErrorLevel err) => setState(() => _error = err);
@override
void didChangeDependencies() {
super.didChangeDependencies();
_loadPostsList();
}
void _loadError() =>
error = _list == null ? ErrorLevel.MAJOR : ErrorLevel.MINOR;
Future<void> _loadPostsList() async {
final list = await _postsHelper.getLatest();
if (list == null) return _loadError();
final users = await _usersHelper.getList(list.usersID);
if (users == null) return _loadError();
setState(() {
_list = list;
_users = users;
});
}
Widget _buildErrorCard() {
return buildErrorCard(tr("Could not get the list of posts !"));
}
Widget _buildListView() {
return ListView.builder(
itemCount: _list.length,
itemBuilder: (c, i) => PostTile(
post: _list[i],
usersInfo: _users,
),
);
}
@override
Widget build(BuildContext context) {
return buildCenteredProgressBar();
if (_error == ErrorLevel.MAJOR) return _buildErrorCard();
if (_list == null) return buildCenteredProgressBar();
return _buildListView();
}
}
}

View File

@ -0,0 +1,27 @@
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/post.dart';
import 'package:flutter/material.dart';
/// Single posts tile
///
/// @author Pierre HUBERT
class PostTile extends StatelessWidget {
final Post post;
final UsersList usersInfo;
const PostTile({
Key key,
@required this.post,
@required this.usersInfo,
}) : assert(post != null),
assert(usersInfo != null),
super(key: key);
@override
Widget build(BuildContext context) {
return ListTile(
leading: Text("a post"),
);
}
}