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:
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
27
lib/ui/tiles/post_tile.dart
Normal file
27
lib/ui/tiles/post_tile.dart
Normal 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"),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user