mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 16:25:17 +00:00
Start to build Forez main route
This commit is contained in:
@ -34,7 +34,7 @@ void main() {
|
||||
appName: "#Forez",
|
||||
appQuickDescription: tr("Events organisation in Forez plain"),
|
||||
toursEntriesBuilder: buildTour,
|
||||
mainRouteBuilder: (c) => ForezRoute(),
|
||||
mainRouteBuilder: (c, k) => ForezRoute(key: k),
|
||||
));
|
||||
|
||||
HttpOverrides.global = new MyHttpOverride();
|
||||
|
@ -2,6 +2,10 @@ import 'package:comunic/models/conversation.dart';
|
||||
import 'package:comunic/ui/dialogs/alert_dialog.dart';
|
||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
||||
import 'package:comunic/ui/screens/conversations_list_screen.dart';
|
||||
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||
import 'package:comunic/ui/widgets/status_widget.dart';
|
||||
import 'package:comunic/ui/widgets/tab_transition_widget.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@ -24,9 +28,8 @@ class _MainRouteState extends MainController {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.blueAccent,
|
||||
child: SafeArea(
|
||||
return StatusWidget(
|
||||
child: (c) => SafeArea(
|
||||
// Avoid OS areas
|
||||
child: WillPopScope(
|
||||
onWillPop: willPop,
|
||||
@ -52,14 +55,112 @@ class _MainRouteState extends MainController {
|
||||
}
|
||||
}
|
||||
|
||||
enum _PopupMenuItems { ACTION_SETTINGS, ACTION_SIGN_OUT }
|
||||
|
||||
class ForezRouteBody extends StatefulWidget {
|
||||
@override
|
||||
_ForezRouteBodyState createState() => _ForezRouteBodyState();
|
||||
}
|
||||
|
||||
class _ForezRouteBodyState extends State<ForezRouteBody> {
|
||||
class _ForezRouteBodyState extends SafeState<ForezRouteBody> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Text("yolo");
|
||||
return DefaultTabController(
|
||||
length: _tabs.length,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text("#Forez"),
|
||||
actions: <Widget>[_buildPopupMenuButton()],
|
||||
bottom: TabBar(tabs: _tabs),
|
||||
),
|
||||
body: TabBarView(children: _tabsPages),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildPopupMenuButton() => PopupMenuButton<_PopupMenuItems>(
|
||||
itemBuilder: (c) => [
|
||||
PopupMenuItem(
|
||||
child: Text(tr("Settings")),
|
||||
value: _PopupMenuItems.ACTION_SETTINGS,
|
||||
),
|
||||
PopupMenuItem(
|
||||
child: Text(tr("Sign out")),
|
||||
value: _PopupMenuItems.ACTION_SIGN_OUT,
|
||||
),
|
||||
],
|
||||
onSelected: _onMenuSelection,
|
||||
);
|
||||
|
||||
void _onMenuSelection(_PopupMenuItems value) {
|
||||
switch (value) {
|
||||
case _PopupMenuItems.ACTION_SETTINGS:
|
||||
MainController.of(context).openSettings();
|
||||
break;
|
||||
case _PopupMenuItems.ACTION_SIGN_OUT:
|
||||
// TODO : handle logout
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
final _list = <_Tab>[
|
||||
// Presence tab
|
||||
_Tab(
|
||||
icon: Icons.calendar_today,
|
||||
title: tr("Presence"),
|
||||
widget: Text("Presence"),
|
||||
),
|
||||
|
||||
// Conversations tab
|
||||
_Tab(
|
||||
icon: Icons.question_answer,
|
||||
title: tr("Conversations"),
|
||||
widget: ConversationsListScreen(),
|
||||
isUnread: (c) => StatusWidgetState.of(c).unreadConversations > 0,
|
||||
),
|
||||
|
||||
// Directory tab
|
||||
_Tab(
|
||||
icon: Icons.import_contacts,
|
||||
title: tr("Directory"),
|
||||
widget: Text("Directory"),
|
||||
),
|
||||
];
|
||||
|
||||
List<Tab> get _tabs => _list
|
||||
.map((e) => Tab(
|
||||
icon: Stack(
|
||||
children: <Widget>[
|
||||
Icon(e.icon),
|
||||
e.isUnread?.call(context) ?? false
|
||||
? Container(color: Colors.red, width: 10, height: 10)
|
||||
: Container(width: 0)
|
||||
],
|
||||
),
|
||||
text: e.title))
|
||||
.toList();
|
||||
|
||||
List<Widget> get _tabsPages =>
|
||||
_list.map((e) => TabTransitionWidget(e.widget)).toList();
|
||||
}
|
||||
|
||||
class _Tab {
|
||||
final IconData icon;
|
||||
final String title;
|
||||
final Widget widget;
|
||||
final bool Function(BuildContext) isUnread;
|
||||
|
||||
const _Tab({
|
||||
@required this.icon,
|
||||
@required this.title,
|
||||
@required this.widget,
|
||||
this.isUnread,
|
||||
}) : assert(icon != null),
|
||||
assert(title != null),
|
||||
assert(widget != null);
|
||||
}
|
||||
|
Reference in New Issue
Block a user