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

Added the "My Page" button to the new app bar

This commit is contained in:
Pierre HUBERT 2019-07-01 12:06:14 +02:00
parent c3f230efc3
commit 73a94f5358
2 changed files with 40 additions and 7 deletions

View File

@ -3,7 +3,9 @@ import 'package:comunic/ui/screens/conversations_list_screen.dart';
import 'package:comunic/ui/screens/friends_list_screen.dart'; import 'package:comunic/ui/screens/friends_list_screen.dart';
import 'package:comunic/ui/screens/newest_posts.dart'; import 'package:comunic/ui/screens/newest_posts.dart';
import 'package:comunic/ui/widgets/navbar_widget.dart'; import 'package:comunic/ui/widgets/navbar_widget.dart';
import 'package:comunic/utils/account_utils.dart';
import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/navigation_utils.dart';
import 'package:comunic/utils/ui_utils.dart'; import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -42,6 +44,13 @@ class _HomeRouteState extends State<HomeRoute> {
void _onTap(BarCallbackActions action) { void _onTap(BarCallbackActions action) {
/// Check more quick actions /// Check more quick actions
switch (action) { switch (action) {
/// Open current user page
case BarCallbackActions.OPEN_MY_PAGE:
_openCurrentUserPage();
break;
/// Logout user
case BarCallbackActions.ACTION_LOGOUT: case BarCallbackActions.ACTION_LOGOUT:
_logoutRequested(); _logoutRequested();
break; break;
@ -97,6 +106,11 @@ class _HomeRouteState extends State<HomeRoute> {
); );
} }
/// Open current user page
Future<void> _openCurrentUserPage() async {
openUserPage(context: context, userID: userID());
}
/// Handle logout requests from user /// Handle logout requests from user
Future<void> _logoutRequested() async { Future<void> _logoutRequested() async {
if (!await showConfirmDialog( if (!await showConfirmDialog(
@ -106,7 +120,7 @@ class _HomeRouteState extends State<HomeRoute> {
await AccountHelper().signOut(); await AccountHelper().signOut();
Navigator.pushReplacement(context, MaterialPageRoute(builder: (c){ Navigator.pushReplacement(context, MaterialPageRoute(builder: (c) {
return LoginRoute(); return LoginRoute();
})); }));
} }

View File

@ -12,6 +12,7 @@ enum BarCallbackActions {
OPEN_CONVERSATIONS, OPEN_CONVERSATIONS,
OPEN_NEWEST_POSTS, OPEN_NEWEST_POSTS,
OPEN_FRIENDS, OPEN_FRIENDS,
OPEN_MY_PAGE,
NONE, NONE,
ACTION_LOGOUT ACTION_LOGOUT
} }
@ -37,6 +38,16 @@ class _MenuItem {
assert(isMenu != null); assert(isMenu != null);
} }
/// Item of action menu
class _ActionMenuItem {
final String label;
final BarCallbackActions action;
const _ActionMenuItem({@required this.label, @required this.action})
: assert(label != null),
assert(action != null);
}
/// List of menu items to show /// List of menu items to show
final _menuItems = <_MenuItem>[ final _menuItems = <_MenuItem>[
_MenuItem( _MenuItem(
@ -58,6 +69,14 @@ final _menuItems = <_MenuItem>[
action: BarCallbackActions.NONE) action: BarCallbackActions.NONE)
]; ];
/// List of menu actions items
final _menuActionsItem = <_ActionMenuItem>[
_ActionMenuItem(
label: tr("My Page"), action: BarCallbackActions.OPEN_MY_PAGE),
_ActionMenuItem(
label: tr("Sign out"), action: BarCallbackActions.ACTION_LOGOUT),
];
/// Public widget /// Public widget
class ComunicAppBar extends StatelessWidget implements PreferredSizeWidget { class ComunicAppBar extends StatelessWidget implements PreferredSizeWidget {
final OnSelectMenuAction onTap; final OnSelectMenuAction onTap;
@ -140,12 +159,12 @@ class _MenuItemWidget extends StatelessWidget {
Widget _buildContextMenuPopupButton() { Widget _buildContextMenuPopupButton() {
return PopupMenuButton<BarCallbackActions>( return PopupMenuButton<BarCallbackActions>(
child: _buildIconContainer(), child: _buildIconContainer(),
itemBuilder: (i) => [ itemBuilder: (i) => _menuActionsItem
PopupMenuItem( .map((f) => PopupMenuItem(
child: Text(tr("Logout")), child: Text(f.label),
value: BarCallbackActions.ACTION_LOGOUT, value: f.action,
) ))
], .toList(),
onSelected: onTap, onSelected: onTap,
); );
} }