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'; /// Newest posts screen /// /// @author Pierre HUBERT class NewestPostsScreen extends StatefulWidget { @override State createState() => _NewestPostsScreenState(); } class _NewestPostsScreenState extends State { // 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 _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) { if (_error == ErrorLevel.MAJOR) return _buildErrorCard(); if (_list == null) return buildCenteredProgressBar(); return _buildListView(); } }