1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-25 22:39:22 +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 'dart:io';
import 'package:comunic/forez/tour/forez_tour_builder.dart'; 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/main.dart';
import 'package:comunic/models/config.dart'; import 'package:comunic/models/config.dart';
import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/intl_utils.dart';
@ -33,6 +34,7 @@ void main() {
appName: "#Forez", appName: "#Forez",
appQuickDescription: tr("Events organisation in Forez plain"), appQuickDescription: tr("Events organisation in Forez plain"),
toursEntriesBuilder: buildTour, toursEntriesBuilder: buildTour,
mainRouteBuilder: (c) => ForezRoute(),
)); ));
HttpOverrides.global = new MyHttpOverride(); 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 'dart:ui';
import 'package:comunic/ui/routes/tour_route.dart'; import 'package:comunic/ui/routes/tour_route.dart';
import 'package:flutter/material.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
/// Application configuration model /// Application configuration model
@ -15,6 +16,8 @@ class Config {
final String apiServerUri; final String apiServerUri;
final bool apiServerSecure; final bool apiServerSecure;
final String clientName; final String clientName;
// Theme customization
final Color splashBackgroundColor; final Color splashBackgroundColor;
final Color primaryColor; final Color primaryColor;
final Color primaryColorDark; final Color primaryColorDark;
@ -24,6 +27,9 @@ class Config {
// Entries for the welcome tour // Entries for the welcome tour
final TourEntriesBuilder toursEntriesBuilder; final TourEntriesBuilder toursEntriesBuilder;
// Custom main application route
final Widget Function(BuildContext) mainRouteBuilder;
const Config({ const Config({
@required this.apiServerName, @required this.apiServerName,
@required this.apiServerUri, @required this.apiServerUri,
@ -35,6 +41,7 @@ class Config {
this.appName = "Comunic", this.appName = "Comunic",
this.appQuickDescription, this.appQuickDescription,
this.toursEntriesBuilder, this.toursEntriesBuilder,
this.mainRouteBuilder,
}) : assert(apiServerName != null), }) : assert(apiServerName != null),
assert(apiServerUri != null), assert(apiServerUri != null),
assert(apiServerSecure != null), assert(apiServerSecure != null),

View File

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