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; IconData icon; Widget Function() create; AppModule(this.name, this.icon, this.create); static Map 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 Modules { timetable, talk, files, marianumMessage, roomPlan, gradeAveragesCalculator, holidays, }