loadable error screen, reload actions, autoreload
This commit is contained in:
@ -1,8 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
|
||||
import '../../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
|
||||
import '../../../model/breakers/Breaker.dart';
|
||||
import '../../../view/pages/files/files.dart';
|
||||
import '../../../view/pages/more/holidays/holidays.dart';
|
||||
import '../../../view/pages/more/roomplan/roomplan.dart';
|
||||
import '../../../view/pages/talk/chatList.dart';
|
||||
import '../../../view/pages/timetable/timetable.dart';
|
||||
import '../../../widget/centeredLeading.dart';
|
||||
import 'gradeAverages/view/grade_averages_view.dart';
|
||||
import 'marianumMessage/view/marianum_message_list_view.dart';
|
||||
|
||||
class AppModule {
|
||||
String name;
|
||||
@ -11,14 +19,37 @@ class AppModule {
|
||||
|
||||
AppModule(this.name, this.icon, this.create);
|
||||
|
||||
static Map<Module, AppModule> modules() => {
|
||||
Module.timetable: AppModule('Vertretung', Icons.calendar_month, Timetable.new),
|
||||
Module.talk: AppModule('Talk', Icons.chat, ChatList.new),
|
||||
Module.files: AppModule('Files', Icons.folder, Files.new),
|
||||
static Map<Modules, AppModule> modules() => {
|
||||
Modules.timetable: AppModule('Vertretung', Icons.calendar_month, Timetable.new),
|
||||
Modules.talk: AppModule('Talk', Icons.chat, ChatList.new),
|
||||
Modules.files: AppModule('Files', Icons.folder, Files.new),
|
||||
Modules.marianumMessage: AppModule('Marianum Message', Icons.newspaper, MarianumMessageListView.new),
|
||||
Modules.roomPlan: AppModule('Raumplan', Icons.location_pin, Roomplan.new),
|
||||
Modules.gradeAveragesCalculator: AppModule('Notendurschnittsrechner', Icons.calculate, GradeAveragesView.new),
|
||||
Modules.holidays: AppModule('Schulferien', Icons.holiday_village, Holidays.new),
|
||||
};
|
||||
|
||||
static AppModule getModule(Modules module) => modules()[module]!;
|
||||
|
||||
Widget toListTile(BuildContext context) => ListTile(
|
||||
leading: CenteredLeading(Icon(icon)),
|
||||
title: Text(name),
|
||||
onTap: () => pushScreen(context, withNavBar: false, screen: create()),
|
||||
trailing: const Icon(Icons.arrow_right),
|
||||
);
|
||||
|
||||
PersistentTabConfig toBottomTab(BuildContext context, {Widget Function(IconData icon)? itemBuilder}) => PersistentTabConfig(
|
||||
screen: Breaker(breaker: BreakerArea.global, child: create()),
|
||||
item: ItemConfig(
|
||||
activeForegroundColor: Theme.of(context).primaryColor,
|
||||
inactiveForegroundColor: Theme.of(context).colorScheme.secondary,
|
||||
icon: itemBuilder == null ? Icon(icon) : itemBuilder(icon),
|
||||
title: name
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
enum Module {
|
||||
enum Modules {
|
||||
timetable,
|
||||
talk,
|
||||
files,
|
||||
|
Reference in New Issue
Block a user