import 'package:comunic/helpers/friends_helper.dart'; import 'package:comunic/helpers/users_helper.dart'; import 'package:comunic/lists/users_list.dart'; import 'package:comunic/models/user.dart'; import 'package:comunic/ui/tiles/simple_user_tile.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/navigation_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; /// Other friends list route (not intended to display current user friends list) /// /// @author Pierre HUBERT class OtherUserFriendsListRoute extends StatefulWidget { final User user; const OtherUserFriendsListRoute({ Key key, @required this.user, }) : assert(user != null), super(key: key); @override _OtherUserFriendsListRouteState createState() => _OtherUserFriendsListRouteState(); } class _OtherUserFriendsListRouteState extends State { final FriendsHelper friendsHelper = FriendsHelper(); final UsersHelper usersHelper = UsersHelper(); UsersList _list; bool _error = false; String get _routeName => tr("Friends of %name%", args: {"name": widget.user.displayName}); void setError(bool e) => setState(() => _error = e); @override void didChangeDependencies() { super.didChangeDependencies(); load(); } /// Load the list of friends of the user Future load() async { setError(false); try { final list = await usersHelper.getListWithThrow( await friendsHelper.getOtherUserList(widget.user.id)); setState(() { _list = list; }); } catch (e, st) { print(e); print(st); setError(true); } } @override Widget build(BuildContext context) { if (_error) return _buildError(); if (_list == null) return buildLoadingPage( showAppBar: true, routeTitle: _routeName, ); return Scaffold( appBar: AppBar( title: Text(_routeName), ), body: ListView.builder( itemCount: _list.length, itemBuilder: (c, i) => SimpleUserTile( user: _list[i], onTap: (u) => openUserPage( context: context, userID: u.id, ), ), ), ); } Widget _buildError() { return Scaffold( appBar: AppBar( title: Text(_routeName), ), body: buildErrorCard( tr( "Could not get the list of friends of %name% !", args: {"name": widget.user.displayName}, ), actions: [ FlatButton( child: Text( tr("Try again").toUpperCase(), style: TextStyle(color: Colors.white), ), onPressed: load, ) ], ), ); } }