1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-12-26 12:58:51 +00:00

Start to build Forez main route

This commit is contained in:
Pierre HUBERT 2021-04-24 09:16:29 +02:00
parent e301b0e95b
commit 1de7e699d7
4 changed files with 82 additions and 5 deletions

View File

@ -1,6 +1,7 @@
import 'dart:io';
import 'package:comunic/forez/tour/forez_tour_builder.dart';
import 'package:comunic/forez/ui/routes/forez_route.dart';
import 'package:comunic/main.dart';
import 'package:comunic/models/config.dart';
import 'package:comunic/utils/intl_utils.dart';
@ -33,6 +34,7 @@ void main() {
appName: "#Forez",
appQuickDescription: tr("Events organisation in Forez plain"),
toursEntriesBuilder: buildTour,
mainRouteBuilder: (c) => ForezRoute(),
));
HttpOverrides.global = new MyHttpOverride();

View File

@ -0,0 +1,65 @@
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/utils/intl_utils.dart';
import 'package:flutter/material.dart';
/// Forez route
///
/// @author Pierre Hubert
class ForezRoute extends StatefulWidget implements MainRoute {
const ForezRoute({Key key}) : super(key: key);
@override
State<StatefulWidget> createState() => _MainRouteState();
}
/// Private implementation of HomeController
class _MainRouteState extends MainController {
@override
PageInfo get defaultPage => PageInfo(
type: PageType.OTHER_PAGE, child: ForezRouteBody(), hideNavBar: true);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blueAccent,
child: SafeArea(
// Avoid OS areas
child: WillPopScope(
onWillPop: willPop,
child: Scaffold(
appBar: currentPage.hideNavBar ? null : AppBar(),
body: SafeArea(key: currentPage.key, child: currentPage.child),
),
),
),
);
}
@override
void openConversation(Conversation conv, {fullScreen: false}) {
// Forcefully open conversations in a "normal" way (do not display groups)
openConversationById(conv.id, fullScreen: fullScreen);
}
@override
void openGroup(int groupID, {int conversationID}) {
alert(context,
tr("This feature is available only in the Comunic application!"));
}
}
class ForezRouteBody extends StatefulWidget {
@override
_ForezRouteBodyState createState() => _ForezRouteBodyState();
}
class _ForezRouteBodyState extends State<ForezRouteBody> {
@override
Widget build(BuildContext context) {
return Text("yolo");
}
}

View File

@ -1,6 +1,7 @@
import 'dart:ui';
import 'package:comunic/ui/routes/tour_route.dart';
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
/// Application configuration model
@ -15,6 +16,8 @@ class Config {
final String apiServerUri;
final bool apiServerSecure;
final String clientName;
// Theme customization
final Color splashBackgroundColor;
final Color primaryColor;
final Color primaryColorDark;
@ -24,6 +27,9 @@ class Config {
// Entries for the welcome tour
final TourEntriesBuilder toursEntriesBuilder;
// Custom main application route
final Widget Function(BuildContext) mainRouteBuilder;
const Config({
@required this.apiServerName,
@required this.apiServerUri,
@ -35,6 +41,7 @@ class Config {
this.appName = "Comunic",
this.appQuickDescription,
this.toursEntriesBuilder,
this.mainRouteBuilder,
}) : assert(apiServerName != null),
assert(apiServerUri != null),
assert(apiServerSecure != null),

View File

@ -105,11 +105,14 @@ class _InitializeWidgetState extends SafeState<InitializeWidget> {
@override
Widget build(BuildContext context) {
return (!_error && WebSocketHelper.isConnected())
? (isTablet(context)
? TabletRoute(key: mainControllerKey)
: SmartphoneMainRoute(key: mainControllerKey))
: _buildNonReadyWidget();
if (_error || !WebSocketHelper.isConnected()) return _buildNonReadyWidget();
if (config().mainRouteBuilder != null)
return config().mainRouteBuilder(context);
return isTablet(context)
? TabletRoute(key: mainControllerKey)
: SmartphoneMainRoute(key: mainControllerKey);
}
/// Build loading widget