mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 12:14:11 +00:00 
			
		
		
		
	Start to build Forez main route
This commit is contained in:
		@@ -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();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										65
									
								
								lib/forez/ui/routes/forez_route.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								lib/forez/ui/routes/forez_route.dart
									
									
									
									
									
										Normal 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");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user