import 'package:comunic/helpers/posts_helper.dart'; import 'package:comunic/models/advanced_group_info.dart'; import 'package:comunic/ui/widgets/group_following_widget.dart'; import 'package:comunic/ui/widgets/group_icon_widget.dart'; import 'package:comunic/ui/widgets/group_membership_widget.dart'; import 'package:comunic/ui/widgets/like_widget.dart'; import 'package:comunic/ui/widgets/posts_list_widget.dart'; import 'package:flutter/material.dart'; /// Authorized group page screen /// /// This screen is shown when the user is allowed to access to a group's page /// /// @author Pierre Hubert class AuthorizedGroupPageScreen extends StatefulWidget { final AdvancedGroupInfo advancedGroupInfo; final Function() needRefresh; const AuthorizedGroupPageScreen({ Key key, @required this.advancedGroupInfo, @required this.needRefresh, }) : assert(advancedGroupInfo != null), assert(needRefresh != null), super(key: key); @override _AuthorizedGroupPageScreenState createState() => _AuthorizedGroupPageScreenState(); } class _AuthorizedGroupPageScreenState extends State { AdvancedGroupInfo get _group => widget.advancedGroupInfo; @override Widget build(BuildContext context) { return Column( children: [ _buildGroupPageHeader(), Expanded(child: _buildGroupPagePostsList()) ], ); } /// Build group page header Widget _buildGroupPageHeader() { return Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ GroupIcon( group: _group, ), Text( " ${_group.displayName}", style: TextStyle(fontSize: 20), ), Spacer(), Column( children: [ GroupMembershipWidget( group: _group, onUpdated: () => widget.needRefresh(), ), Container( height: 4, ), GroupFollowingWidget( group: _group, onUpdated: () => widget.needRefresh(), ), Container( height: 2, ), LikeWidget( likeElement: _group, ) ], ) ], ), ); } /// Build the list of posts of the group Widget _buildGroupPagePostsList() { return PostsListWidget( getPostsList: () => PostsHelper().getGroupPosts(_group.id), showPostsTarget: false, userNamesClickable: true, getOlder: (from) => PostsHelper().getGroupPosts(_group.id, from: from), ); } }