Files
TPSchedule/mobile/lib/main.dart
T

46 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 'app/tp_startup.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 launchApplication(
ready: controller.initialize(),
child: buildApplication(
controller,
notificationSelection: selection,
school: SchoolSession(),
),
);
}