Browse Source

Move stuff from internship mac

tmp
Dan Cojocaru 3 years ago
parent
commit
6fab8e1974
  1. 3
      lib/components/select_train_suggestions/select_train_suggestions.dart
  2. 4
      lib/main.dart
  3. 3
      lib/pages/station_arrdep_page/select_station/select_station.dart
  4. 1
      lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart
  5. 8
      lib/pages/station_arrdep_page/view_station/view_station.dart
  6. 2
      lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart
  7. 15
      lib/pages/train_info_page/select_train/select_train.dart
  8. 1
      lib/pages/train_info_page/select_train/select_train_cupertino.dart
  9. 16
      lib/pages/train_info_page/view_train/train_info.dart
  10. 12
      lib/pages/train_info_page/view_train/train_info_cupertino.dart
  11. 14
      lib/utils/string_number_prefix.dart

3
lib/components/select_train_suggestions/select_train_suggestions.dart

@ -6,6 +6,7 @@ import 'package:info_tren/components/select_train_suggestions/select_train_sugge
import 'package:info_tren/models/train_operator_lines.dart'; import 'package:info_tren/models/train_operator_lines.dart';
import 'package:info_tren/models/ui_design.dart'; import 'package:info_tren/models/ui_design.dart';
import 'package:info_tren/utils/default_ui_design.dart'; import 'package:info_tren/utils/default_ui_design.dart';
import 'package:info_tren/utils/string_number_prefix.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class SelectTrainSuggestions extends StatefulWidget { class SelectTrainSuggestions extends StatefulWidget {
@ -100,7 +101,7 @@ abstract class SelectTrainSuggestionsState extends State<SelectTrainSuggestions>
uiDesign: widget.uiDesign, uiDesign: widget.uiDesign,
operatorName: tuple.item2, operatorName: tuple.item2,
trains: tuple.item1, trains: tuple.item1,
onTrainSelected: widget.onTrainSelected, onTrainSelected: (s) => widget.onTrainSelected(s.numberPrefix),
)).toList(); )).toList();
return CustomScrollView( return CustomScrollView(

4
lib/main.dart

@ -34,8 +34,10 @@ Map<String, WidgetBuilder> routesByUiDesign(UiDesign uiDesign) => {
return SelectTrainPage(uiDesign: uiDesign); return SelectTrainPage(uiDesign: uiDesign);
}, },
TrainInfo.routeName: (context) { TrainInfo.routeName: (context) {
final params = ModalRoute.of(context)!.settings.arguments as TrainInfoParams;
return TrainInfo( return TrainInfo(
trainNumber: ModalRoute.of(context)!.settings.arguments as String, trainNumber: params.trainNumber,
previousPageTitle: params.previousPageTitle,
uiDesign: uiDesign, uiDesign: uiDesign,
); );
}, },

3
lib/pages/station_arrdep_page/select_station/select_station.dart

@ -7,6 +7,7 @@ import 'package:info_tren/utils/default_ui_design.dart';
import 'package:info_tren/api/stations.dart' as apiStations; import 'package:info_tren/api/stations.dart' as apiStations;
class SelectStationPage extends StatefulWidget { class SelectStationPage extends StatefulWidget {
static const pageTitle = 'Plecări/sosiri stație';
final UiDesign? uiDesign; final UiDesign? uiDesign;
const SelectStationPage({ Key? key, this.uiDesign }) : super(key: key); const SelectStationPage({ Key? key, this.uiDesign }) : super(key: key);
@ -26,7 +27,7 @@ class SelectStationPage extends StatefulWidget {
} }
abstract class SelectStationPageState extends State<SelectStationPage> { abstract class SelectStationPageState extends State<SelectStationPage> {
static const pageTitle = 'Plecări/sosiri stație'; static const pageTitle = SelectStationPage.pageTitle;
static const textFieldLabel = 'Numele stației'; static const textFieldLabel = 'Numele stației';
static const roToEn = { static const roToEn = {
'ă': 'a', 'ă': 'a',

1
lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart

@ -8,6 +8,7 @@ class SelectStationPageStateCupertino extends SelectStationPageState {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text(SelectStationPageState.pageTitle), middle: Text(SelectStationPageState.pageTitle),
previousPageTitle: 'Info Tren',
), ),
child: SafeArea( child: SafeArea(
bottom: false, bottom: false,

8
lib/pages/station_arrdep_page/view_station/view_station.dart

@ -71,7 +71,13 @@ abstract class ViewStationPageState extends State<ViewStationPage> {
} }
void onTrainTapped(String trainNumber) { void onTrainTapped(String trainNumber) {
Navigator.of(context).pushNamed(TrainInfo.routeName, arguments: trainNumber); Navigator.of(context).pushNamed(
TrainInfo.routeName,
arguments: TrainInfoParams(
trainNumber: trainNumber,
previousPageTitle: stationName,
),
);
} }
@override @override

2
lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart

@ -4,6 +4,7 @@ import 'package:info_tren/components/refresh_future_builder.dart';
import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/framework.dart';
import 'package:info_tren/components/sliver_persistent_header_padding.dart'; import 'package:info_tren/components/sliver_persistent_header_padding.dart';
import 'package:info_tren/models/station_data.dart'; import 'package:info_tren/models/station_data.dart';
import 'package:info_tren/pages/station_arrdep_page/select_station/select_station.dart';
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart'; import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
class ViewStationPageStateCupertino extends ViewStationPageState { class ViewStationPageStateCupertino extends ViewStationPageState {
@ -12,6 +13,7 @@ class ViewStationPageStateCupertino extends ViewStationPageState {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text(snapshot.hasData ? snapshot.data!.stationName : stationName), middle: Text(snapshot.hasData ? snapshot.data!.stationName : stationName),
previousPageTitle: SelectStationPage.pageTitle,
), ),
child: snapshot.hasData ? CupertinoTabScaffold( child: snapshot.hasData ? CupertinoTabScaffold(
tabBar: CupertinoTabBar( tabBar: CupertinoTabBar(

15
lib/pages/train_info_page/select_train/select_train.dart

@ -13,14 +13,21 @@ import 'package:tuple/tuple.dart';
typedef TrainSelectedCallback(int trainNumber); typedef TrainSelectedCallback(int trainNumber);
class SelectTrainPage extends StatefulWidget { class SelectTrainPage extends StatefulWidget {
static const String routeName = "/trainInfo/selectTrain";
static const String pageTitle = 'Informații despre tren';
final UiDesign? uiDesign; final UiDesign? uiDesign;
SelectTrainPage({Key? key, this.uiDesign}) : super(key: key); SelectTrainPage({Key? key, this.uiDesign}) : super(key: key);
static String routeName = "/trainInfo/selectTrain";
void onTrainSelected(BuildContext context, String selection) { void onTrainSelected(BuildContext context, String selection) {
Navigator.of(context).pushNamed(TrainInfo.routeName, arguments: selection); Navigator.of(context).pushNamed(
TrainInfo.routeName,
arguments: TrainInfoParams(
trainNumber: selection,
previousPageTitle: pageTitle,
),
);
} }
@override @override
@ -38,8 +45,8 @@ class SelectTrainPage extends StatefulWidget {
} }
abstract class SelectTrainPageState extends State<SelectTrainPage> { abstract class SelectTrainPageState extends State<SelectTrainPage> {
final String pageTitle = 'Informații despre tren';
final String textFieldLabel = 'Numărul trenului'; final String textFieldLabel = 'Numărul trenului';
final String pageTitle = SelectTrainPage.pageTitle;
TextEditingController trainNoController = TextEditingController(); TextEditingController trainNoController = TextEditingController();

1
lib/pages/train_info_page/select_train/select_train_cupertino.dart

@ -8,6 +8,7 @@ class SelectTrainPageStateCupertino extends SelectTrainPageState {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text(pageTitle), middle: Text(pageTitle),
previousPageTitle: 'Info Tren',
), ),
child: SafeArea( child: SafeArea(
bottom: false, bottom: false,

16
lib/pages/train_info_page/view_train/train_info.dart

@ -10,14 +10,23 @@ import 'package:info_tren/pages/train_info_page/view_train/train_info_cupertino.
import 'package:info_tren/pages/train_info_page/view_train/train_info_material.dart'; import 'package:info_tren/pages/train_info_page/view_train/train_info_material.dart';
import 'package:info_tren/utils/default_ui_design.dart'; import 'package:info_tren/utils/default_ui_design.dart';
class TrainInfoParams {
final String trainNumber;
final String? previousPageTitle;
TrainInfoParams({required this.trainNumber, this.previousPageTitle,});
}
class TrainInfo extends StatelessWidget { class TrainInfo extends StatelessWidget {
static String routeName = "/trainInfo/display"; static String routeName = "/trainInfo/display";
final UiDesign? uiDesign; final UiDesign? uiDesign;
final String trainNumber; final String trainNumber;
final String previousPageTitle;
TrainInfo({Key? key, required this.trainNumber, this.uiDesign}): super(key: key); TrainInfo({Key? key, required this.trainNumber, this.uiDesign, String? previousPageTitle,})
: previousPageTitle = previousPageTitle ?? 'Înapoi'
, super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -46,10 +55,10 @@ class TrainInfo extends StatelessWidget {
); );
case UiDesign.CUPERTINO: case UiDesign.CUPERTINO:
if ([RefreshFutureBuilderState.none, RefreshFutureBuilderState.waiting].contains(snapshot.state)) { if ([RefreshFutureBuilderState.none, RefreshFutureBuilderState.waiting].contains(snapshot.state)) {
return TrainInfoLoadingCupertino(title: trainNumber.toString(), loadingText: "Se încarcă...",); return TrainInfoLoadingCupertino(title: trainNumber.toString(), loadingText: "Se încarcă...", previousPageTitle: previousPageTitle,);
} }
else if (snapshot.state == RefreshFutureBuilderState.error) { else if (snapshot.state == RefreshFutureBuilderState.error) {
return TrainInfoErrorCupertino(title: '$trainNumber - Error', error: snapshot.error!, refresh: refresh,); return TrainInfoErrorCupertino(title: '$trainNumber - Error', error: snapshot.error!, refresh: refresh, previousPageTitle: previousPageTitle,);
} }
return TrainInfoCupertino( return TrainInfoCupertino(
@ -57,6 +66,7 @@ class TrainInfo extends StatelessWidget {
refresh: refresh, refresh: refresh,
isRefreshing: snapshot.state == RefreshFutureBuilderState.refreshing, isRefreshing: snapshot.state == RefreshFutureBuilderState.refreshing,
onViewYesterdayTrain: onViewYesterdayTrain, onViewYesterdayTrain: onViewYesterdayTrain,
previousPageTitle: previousPageTitle,
); );
default: default:
throw UnmatchedUiDesignException(uiDesign); throw UnmatchedUiDesignException(uiDesign);

12
lib/pages/train_info_page/view_train/train_info_cupertino.dart

@ -12,7 +12,9 @@ import 'package:info_tren/pages/train_info_page/view_train/train_info_cupertino_
import 'package:info_tren/utils/state_to_string.dart'; import 'package:info_tren/utils/state_to_string.dart';
class TrainInfoLoadingCupertino extends TrainInfoLoading { class TrainInfoLoadingCupertino extends TrainInfoLoading {
TrainInfoLoadingCupertino({required String title, String? loadingText}) final String? previousPageTitle;
TrainInfoLoadingCupertino({required String title, String? loadingText, this.previousPageTitle,})
: super( : super(
title: title, title: title,
loadingText: loadingText, loadingText: loadingText,
@ -23,6 +25,7 @@ class TrainInfoLoadingCupertino extends TrainInfoLoading {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text(title), middle: Text(title),
previousPageTitle: previousPageTitle ?? 'Înapoi',
), ),
child: Center( child: Center(
child: loadingWidget, child: loadingWidget,
@ -32,10 +35,13 @@ class TrainInfoLoadingCupertino extends TrainInfoLoading {
} }
class TrainInfoErrorCupertino extends TrainInfoError { class TrainInfoErrorCupertino extends TrainInfoError {
final String? previousPageTitle;
TrainInfoErrorCupertino({ TrainInfoErrorCupertino({
required Object error, required Object error,
required String title, required String title,
Future Function()? refresh, Future Function()? refresh,
this.previousPageTitle,
}) : super( }) : super(
error: error, error: error,
title: title, title: title,
@ -47,6 +53,7 @@ class TrainInfoErrorCupertino extends TrainInfoError {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text(title), middle: Text(title),
previousPageTitle: previousPageTitle ?? 'Înapoi',
), ),
child: Center( child: Center(
child: Column( child: Column(
@ -73,12 +80,14 @@ class TrainInfoCupertino extends StatelessWidget {
final Future Function()? refresh; final Future Function()? refresh;
final bool? isRefreshing; final bool? isRefreshing;
final void Function()? onViewYesterdayTrain; final void Function()? onViewYesterdayTrain;
final String previousPageTitle;
TrainInfoCupertino({ TrainInfoCupertino({
required this.trainData, required this.trainData,
this.refresh, this.refresh,
this.isRefreshing, this.isRefreshing,
this.onViewYesterdayTrain, this.onViewYesterdayTrain,
required this.previousPageTitle,
}); });
@override @override
@ -86,6 +95,7 @@ class TrainInfoCupertino extends StatelessWidget {
return CupertinoPageScaffold( return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar( navigationBar: CupertinoNavigationBar(
middle: Text("Informații despre ${trainData.rank} ${trainData.number}"), middle: Text("Informații despre ${trainData.rank} ${trainData.number}"),
previousPageTitle: previousPageTitle,
trailing: refresh == null ? null : isRefreshing == true ? CupertinoActivityIndicator() : CupertinoButton( trailing: refresh == null ? null : isRefreshing == true ? CupertinoActivityIndicator() : CupertinoButton(
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
alignment: Alignment.center, alignment: Alignment.center,

14
lib/utils/string_number_prefix.dart

@ -0,0 +1,14 @@
extension NumberPrefix on String {
String get numberPrefix {
final sb = StringBuffer();
for (final c in this.runes) {
if ('0'.runes.first <= c && c <= '9'.runes.first) {
sb.writeCharCode(c);
}
else {
break;
}
}
return sb.toString();
}
}
Loading…
Cancel
Save