1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-22 21:09:21 +00:00

Simplify code

This commit is contained in:
Pierre HUBERT 2021-03-16 18:36:17 +01:00
parent cc553e803d
commit a14a701f4d
2 changed files with 71 additions and 67 deletions

View File

@ -1,15 +1,11 @@
import 'package:comunic/enums/post_target.dart';
import 'package:comunic/helpers/posts_helper.dart';
import 'package:comunic/models/advanced_group_info.dart'; import 'package:comunic/models/advanced_group_info.dart';
import 'package:comunic/ui/routes/main_route/main_route.dart'; import 'package:comunic/ui/routes/main_route/main_route.dart';
import 'package:comunic/ui/screens/group_members_screen.dart'; import 'package:comunic/ui/screens/group_sections/group_posts_section.dart';
import 'package:comunic/ui/screens/group_settings_screen.dart'; import 'package:comunic/ui/screens/group_settings_screen.dart';
import 'package:comunic/ui/widgets/group_following_widget.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_icon_widget.dart';
import 'package:comunic/ui/widgets/group_membership_widget.dart'; import 'package:comunic/ui/widgets/group_membership_widget.dart';
import 'package:comunic/ui/widgets/like_widget.dart'; import 'package:comunic/ui/widgets/like_widget.dart';
import 'package:comunic/ui/widgets/post_create_form_widget.dart';
import 'package:comunic/ui/widgets/posts_list_widget.dart';
import 'package:comunic/ui/widgets/safe_state.dart'; import 'package:comunic/ui/widgets/safe_state.dart';
import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/intl_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -20,8 +16,6 @@ import 'package:flutter/material.dart';
/// ///
/// @author Pierre Hubert /// @author Pierre Hubert
enum _MenuItems { OPEN_MEMBERS, OPEN_SETTINGS }
Color get _headerTextColor => Colors.white; Color get _headerTextColor => Colors.white;
Color get _headerColor => Colors.blueAccent.shade700; Color get _headerColor => Colors.blueAccent.shade700;
@ -50,10 +44,12 @@ class _AuthorizedGroupPageScreenState
TabController _tabController; TabController _tabController;
final _postsKey = GlobalKey<PostsListWidgetState>();
List<_GroupPageTab> get _tabs => [ List<_GroupPageTab> get _tabs => [
_GroupPageTab(widget: _buildGroupPagePostsList(), label: tr("Posts")), // Posts list
_GroupPageTab(
widget: GroupPostsSection(group: _group),
label: tr("Posts"),
),
]; ];
@override @override
@ -97,10 +93,10 @@ class _AuthorizedGroupPageScreenState
/// Build group page header /// Build group page header
Widget _buildGroupPageHeader() { Widget _buildGroupPageHeader() {
return DefaultTextStyle( return Material(
style: TextStyle(color: _headerTextColor),
child: Container(
color: _headerColor, color: _headerColor,
child: DefaultTextStyle(
style: TextStyle(color: _headerTextColor),
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Row( child: Row(
@ -140,65 +136,20 @@ class _AuthorizedGroupPageScreenState
), ),
], ],
), ),
PopupMenuButton<_MenuItems>(
itemBuilder: (c) => [ // Settings button
PopupMenuItem( _group.isAdmin
child: Text(tr("Group members")), ? IconButton(
value: _MenuItems.OPEN_MEMBERS, icon: Icon(Icons.settings, color: _headerTextColor),
enabled: _group.isAtLeastModerator, onPressed: () => MainController.of(context)
), .push(GroupSettingsScreen(groupID: _group.id)))
PopupMenuItem( : Container(),
child: Text(tr("Group settings")),
value: _MenuItems.OPEN_SETTINGS,
enabled: _group.isAdmin,
),
],
onSelected: _handleMenuSelection,
),
], ],
), ),
), ),
), ),
); );
} }
/// Add create post target
Widget _buildPostCreationArea() {
if (!_group.canCreatePost) return Container();
return PostCreateFormWidget(
postTarget: PostTarget.GROUP_PAGE,
targetID: _group.id,
onCreated: () => _postsKey.currentState.loadPostsList(getOlder: false));
}
/// Build the list of posts of the group
Widget _buildGroupPagePostsList() {
return PostsListWidget(
key: _postsKey,
topWidgets: <Widget>[
_buildPostCreationArea(),
],
getPostsList: () => PostsHelper().getGroupPosts(_group.id),
showPostsTarget: false,
userNamesClickable: true,
getOlder: (from) => PostsHelper().getGroupPosts(_group.id, from: from),
);
}
/// Handles menu selection
void _handleMenuSelection(_MenuItems item) {
switch (item) {
case _MenuItems.OPEN_MEMBERS:
MainController.of(context).push(GroupMembersScreen(groupID: _group.id));
break;
case _MenuItems.OPEN_SETTINGS:
MainController.of(context)
.push(GroupSettingsScreen(groupID: _group.id));
break;
}
}
} }
class _GroupPageTab { class _GroupPageTab {

View File

@ -0,0 +1,53 @@
import 'package:comunic/enums/post_target.dart';
import 'package:comunic/helpers/posts_helper.dart';
import 'package:comunic/models/advanced_group_info.dart';
import 'package:comunic/ui/widgets/post_create_form_widget.dart';
import 'package:comunic/ui/widgets/posts_list_widget.dart';
/// Group posts section
///
/// @author Pierre Hubert
import 'package:flutter/material.dart';
class GroupPostsSection extends StatefulWidget {
final AdvancedGroupInfo group;
const GroupPostsSection({
Key key,
@required this.group,
}) : assert(group != null),
super(key: key);
@override
_GroupPostsSectionState createState() => _GroupPostsSectionState();
}
class _GroupPostsSectionState extends State<GroupPostsSection> {
final _postsKey = GlobalKey<PostsListWidgetState>();
/// Add create post target
Widget _buildPostCreationArea() {
if (!widget.group.canCreatePost) return Container();
return PostCreateFormWidget(
postTarget: PostTarget.GROUP_PAGE,
targetID: widget.group.id,
onCreated: () => _postsKey.currentState.loadPostsList(getOlder: false),
);
}
/// Build the list of posts of the group
@override
Widget build(BuildContext context) {
return PostsListWidget(
key: _postsKey,
topWidgets: <Widget>[
_buildPostCreationArea(),
],
getPostsList: () => PostsHelper().getGroupPosts(widget.group.id),
showPostsTarget: false,
userNamesClickable: true,
getOlder: (from) =>
PostsHelper().getGroupPosts(widget.group.id, from: from),
);
}
}