2026-10-28 23:48:07 +01:00
|
|
|
import 'package:drift_flutter/drift_flutter.dart';
|
2026-10-28 23:18:03 +01:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
|
|
import 'src/app.dart';
|
2026-10-28 23:48:07 +01:00
|
|
|
import 'src/database/database.dart';
|
2026-10-28 23:18:03 +01:00
|
|
|
import 'src/exercises/exercise_library.dart';
|
2026-10-29 00:20:16 +01:00
|
|
|
import 'src/history/session_repository.dart';
|
2026-10-28 23:48:07 +01:00
|
|
|
import 'src/plans/plan_repository.dart';
|
2026-10-29 00:20:16 +01:00
|
|
|
import 'src/player/player_effects.dart';
|
2026-10-28 23:18:03 +01:00
|
|
|
import 'src/settings/settings_controller.dart';
|
2026-10-29 00:34:49 +01:00
|
|
|
import 'src/streak/reminder_scheduler.dart';
|
2026-10-28 23:18:03 +01:00
|
|
|
|
|
|
|
|
void main() async {
|
|
|
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
|
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
|
|
|
|
|
|
2026-10-28 23:48:07 +01:00
|
|
|
final db = AppDatabase(driftDatabase(name: 'zenxercise'));
|
2026-10-28 23:18:03 +01:00
|
|
|
final library = await ExerciseLibrary.load(rootBundle);
|
|
|
|
|
final settings = SettingsController(SettingsService());
|
|
|
|
|
await settings.loadSettings();
|
2026-10-29 00:34:49 +01:00
|
|
|
final sessions = SessionRepository(db);
|
|
|
|
|
final notifier = LocalNotifier();
|
|
|
|
|
await notifier.init();
|
|
|
|
|
final reminders = ReminderScheduler(notifier, settings, sessions);
|
|
|
|
|
// Today may have been finished, or a day may have passed, since the last run.
|
|
|
|
|
reminders.sync();
|
2026-10-28 23:18:03 +01:00
|
|
|
|
|
|
|
|
runApp(
|
|
|
|
|
MultiProvider(
|
|
|
|
|
providers: [
|
|
|
|
|
ChangeNotifierProvider.value(value: settings),
|
|
|
|
|
Provider.value(value: library),
|
2026-10-28 23:48:07 +01:00
|
|
|
Provider.value(value: PlanRepository(db)),
|
2026-10-29 00:34:49 +01:00
|
|
|
Provider.value(value: sessions),
|
|
|
|
|
Provider<Notifier>.value(value: notifier),
|
|
|
|
|
Provider.value(value: reminders),
|
2026-10-29 00:20:16 +01:00
|
|
|
Provider<PlayerEffects>(create: (_) => DevicePlayerEffects()),
|
2026-10-28 23:18:03 +01:00
|
|
|
],
|
|
|
|
|
child: const ZenXerciseApp(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|