45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
Dart
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<String?>? notificationSelection,
|
|
SchoolSession? school,
|
|
}) => HepanApp(
|
|
controller: controller,
|
|
notificationSelection: notificationSelection,
|
|
school: school,
|
|
schoolBuilder: school == null
|
|
? null
|
|
: () => SchoolAuthPage(session: school, controller: controller),
|
|
);
|
|
Future<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
tzdata.initializeTimeZones();
|
|
final selection = ValueNotifier<String?>(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(),
|
|
),
|
|
);
|
|
}
|