import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:timezone/data/latest.dart' as tzdata; import 'app/app_controller.dart'; import 'app/hepan_app.dart'; import 'data/file_snapshot_store.dart'; import 'services/local_notification_service.dart'; import 'services/android_calendar_service.dart'; import 'features/school/school_session.dart'; import 'features/school/school_auth_page.dart'; Widget buildApplication( AppController controller, { ValueNotifier? notificationSelection, SchoolSession? school, }) => HepanApp( controller: controller, notificationSelection: notificationSelection, school: school, schoolBuilder: school == null ? null : () => SchoolAuthPage(session: school, controller: controller), ); Future main() async { WidgetsFlutterBinding.ensureInitialized(); tzdata.initializeTimeZones(); final selection = ValueNotifier(null); final gateway = PluginReminderGateway(onTap: (key) => selection.value = key); final controller = AppController( FileSnapshotStore(await getApplicationSupportDirectory()), LocalNotificationService(gateway), AndroidCalendarService(MethodCalendarGateway()), DateTime.now, ); await controller.initialize(); runApp( buildApplication( controller, notificationSelection: selection, school: SchoolSession(), ), ); }