From 59fd435bd70e7e057717ca627049eb4ec077c8dd Mon Sep 17 00:00:00 2001 From: Dan Cojocaru Date: Sun, 15 Sep 2019 02:52:16 +0300 Subject: [PATCH] Switching to routes instead of manual navigation --- lib/main.dart | 53 +++++++++++++--------- lib/train_info_page/train_info.dart | 2 + lib/train_info_page/train_info_prompt.dart | 32 +++---------- 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 53112e5..866890c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,9 @@ import 'dart:io' show Platform; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:info_tren/train_info_page/train_info.dart'; +import 'package:info_tren/train_info_page/train_info_cupertino.dart'; +import 'package:info_tren/train_info_page/train_info_material.dart'; import 'package:info_tren/train_info_page/train_info_prompt.dart'; @@ -20,7 +23,20 @@ class StartPoint extends StatelessWidget { primaryColor: Colors.blue.shade600, accentColor: Colors.blue.shade700, ), - home: MainPageMaterial(), +// home: MainPageMaterial(), + routes: { + Navigator.defaultRouteName: (context) { + return MainPageMaterial(); + }, + TrainInfoPromptCommon.routeName: (context) { + return TrainInfoPromptMaterial(); + }, + TrainInfo.routeName: (context) { + return TrainInfoMaterial( + trainNumber: ModalRoute.of(context).settings.arguments as int, + ); + }, + }, ); } else if (Platform.isIOS) { @@ -30,7 +46,20 @@ class StartPoint extends StatelessWidget { primaryColor: Colors.blue.shade600, brightness: Brightness.dark, ), - home: MainPageCupertino(), +// home: MainPageCupertino(), + routes: { + Navigator.defaultRouteName: (context) { + return MainPageCupertino(); + }, + TrainInfoPromptCommon.routeName: (context) { + return TrainInfoPromptCupertino(); + }, + TrainInfo.routeName: (context) { + return TrainInfoCupertino( + trainNumber: ModalRoute.of(context).settings.arguments as int, + ); + }, + } ); } return null; @@ -39,25 +68,7 @@ class StartPoint extends StatelessWidget { mixin MainPageAction { onTrainInfoPageInvoke(BuildContext context) { - if (Platform.isAndroid) { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) { - return TrainInfoPromptMaterial(); - } - ) - ); - } - else if (Platform.isIOS) { - Navigator.of(context).push( - CupertinoPageRoute( - builder: (context) { - return TrainInfoPromptCupertino(); - }, - title: "Informații despre tren" - ) - ); - } + Navigator.of(context).pushNamed(TrainInfoPromptCommon.routeName); } onStationBoardPageInvoke(BuildContext context) { diff --git a/lib/train_info_page/train_info.dart b/lib/train_info_page/train_info.dart index c8dc129..7b25a21 100644 --- a/lib/train_info_page/train_info.dart +++ b/lib/train_info_page/train_info.dart @@ -15,6 +15,8 @@ mixin TrainInfoMixin { } class TrainInfo extends StatelessWidget { + static String routeName = "/trainInfo/display"; + final int trainNumber; TrainInfo({@required this.trainNumber}); diff --git a/lib/train_info_page/train_info_prompt.dart b/lib/train_info_page/train_info_prompt.dart index ac1108a..cd78164 100644 --- a/lib/train_info_page/train_info_prompt.dart +++ b/lib/train_info_page/train_info_prompt.dart @@ -12,31 +12,11 @@ part 'train_info_prompt.g.dart'; typedef TrainSelectedCallback(int trainNumber); -mixin TrainInfoPromptAction { +mixin TrainInfoPromptCommon { + static String routeName = "/trainInfo/chooseTrain"; + onTrainSelected(BuildContext context, int selection) { - if (Platform.isAndroid) { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) { - return TrainInfo( - trainNumber: selection, - ); - }, - ) - ); - } - else if (Platform.isIOS) { - Navigator.of(context).push( - CupertinoPageRoute( - title: "Informații despre trenul $selection", - builder: (context) { - return TrainInfo( - trainNumber: selection, - ); - }, - ) - ); - } + Navigator.of(context).pushNamed(TrainInfo.routeName, arguments: selection); } } @@ -251,7 +231,7 @@ class TrainInfoPromptMaterial extends StatefulWidget { _TrainInfoPromptMaterialState createState() => _TrainInfoPromptMaterialState(); } -class _TrainInfoPromptMaterialState extends State with TrainInfoPromptAction, TrainInfoPromptListHandling { +class _TrainInfoPromptMaterialState extends State with TrainInfoPromptCommon, TrainInfoPromptListHandling { TextEditingController trainNoController = TextEditingController(); @override @@ -311,7 +291,7 @@ class TrainInfoPromptCupertino extends StatefulWidget { _TrainInfoPromptCupertinoState createState() => _TrainInfoPromptCupertinoState(); } -class _TrainInfoPromptCupertinoState extends State with TrainInfoPromptAction, TrainInfoPromptListHandling { +class _TrainInfoPromptCupertinoState extends State with TrainInfoPromptCommon, TrainInfoPromptListHandling { TextEditingController trainNoController = TextEditingController(); @override