import 'package:comunic/helpers/groups_helper.dart'; import 'package:comunic/helpers/users_helper.dart'; import 'package:comunic/lists/group_members_list.dart'; import 'package:comunic/lists/users_list.dart'; import 'package:comunic/models/group_membership.dart'; import 'package:comunic/ui/widgets/account_image_widget.dart'; import 'package:comunic/ui/widgets/async_screen_widget.dart'; import 'package:comunic/ui/widgets/comunic_back_button_widget.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/material.dart'; /// Group members screen /// /// @author Pierre HUBERT class GroupMembersScreen extends StatefulWidget { final int groupID; const GroupMembersScreen({Key key, this.groupID}) : assert(groupID != null), super(key: key); @override _GroupMembersScreenState createState() => _GroupMembersScreenState(); } class _GroupMembersScreenState extends State { GroupMembersList _members; UsersList _users; Future _refresh() async { final members = await GroupsHelper.getMembersList(widget.groupID); final users = await UsersHelper().getListWithThrow(members.usersID); _members = members; _users = users; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: ComunicBackButton(), title: Text(tr("Group members")), ), body: _buildBody(), ); } Widget _buildBody() => AsyncScreenWidget( onReload: _refresh, onBuild: _buildBodyContent, errorMessage: tr("Could not load the list of members of this group!"), ); Widget _buildBodyContent() { return ListView( children: _members.map(_buildGroupMemberTile).toList(), ); } ListTile _buildGroupMemberTile(GroupMembership membership) { final user = _users.getUser(membership.userID); return ListTile( leading: AccountImageWidget( user: user, ), title: Text(user.displayName), ); } }