info_tren/lib/pages/main/main_page.dart

86 lines
2.5 KiB
Dart
Raw Normal View History

import 'package:flutter/widgets.dart';
import 'package:info_tren/models/ui_design.dart';
import 'package:info_tren/pages/about/about_page.dart';
import 'package:info_tren/pages/main/main_page_cupertino.dart';
import 'package:info_tren/pages/main/main_page_material.dart';
2021-08-28 04:35:58 +03:00
import 'package:info_tren/pages/station_arrdep_page/select_station/select_station.dart';
import 'package:info_tren/pages/train_info_page/select_train/select_train.dart';
import 'package:info_tren/utils/default_ui_design.dart';
class MainPage extends StatelessWidget {
final UiDesign? uiDesign;
const MainPage({ Key? key, this.uiDesign }) : super(key: key);
@override
Widget build(BuildContext context) {
final uiDesign = this.uiDesign ?? defaultUiDesign;
switch (uiDesign) {
case UiDesign.MATERIAL:
return MainPageMaterial();
case UiDesign.CUPERTINO:
return MainPageCupertino();
default:
throw UnmatchedUiDesignException(uiDesign);
}
}
}
abstract class MainPageShared extends StatelessWidget {
final String pageTitle = 'Info Tren';
final String moreOptionsText = 'Mai multe opțiuni';
List<MainPageAction> get popupMenu => [
MainPageAction(
name: 'Despre aplicație',
action: (context) {
Navigator.of(context).pushNamed(AboutPage.routeName);
},
),
];
List<MainPageAction> get options => [
MainPageAction(
name: 'Informații despre tren',
description: 'Află informații despre parcursul unui anumit tren',
action: (context) {
onTrainInfoPageInvoke(context);
},
),
MainPageAction(
name: 'Tabelă plecari/sosiri',
description: 'Vezi trenurile care pleacă și sosesc dintr-o gară',
2021-08-28 04:35:58 +03:00
action: (context) {
onStationBoardPageInvoke(context);
},
),
MainPageAction(
name: 'Planificare rută',
description: 'Găsește trenurile disponibile pentru călătoria între două gări',
// TODO: Implement route planning
action: null,
),
];
onTrainInfoPageInvoke(BuildContext context) {
Navigator.of(context).pushNamed(SelectTrainPage.routeName);
}
onStationBoardPageInvoke(BuildContext context) {
2021-08-28 04:35:58 +03:00
Navigator.of(context).pushNamed(SelectStationPage.routeName);
}
onRoutePlanPageInvoke(BuildContext context) {
}
}
class MainPageAction {
final String name;
final String? description;
final void Function(BuildContext context)? action;
MainPageAction({required this.name, this.action, this.description});
}