import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'app.dart'; import 'core/display_controller.dart'; import 'core/theme/theme_controller.dart'; import 'data/repositories/settings_repository.dart'; import 'data/services/native_bridge.dart'; import 'data/services/pin_service.dart'; import 'data/services/secure_store.dart'; import 'data/services/telemetry_bridge.dart'; import 'features/home/gps_speed_controller.dart'; import 'features/home/launcher_controller.dart'; import 'features/home/obd_controller.dart'; import 'features/home/system_controller.dart'; import 'features/home/weather_controller.dart'; import 'features/settings/update_controller.dart'; import 'features/lock/lock_controller.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations(const [ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( statusBarColor: Colors.transparent, systemNavigationBarColor: Colors.transparent, statusBarIconBrightness: Brightness.light, systemNavigationBarIconBrightness: Brightness.light, systemNavigationBarDividerColor: Colors.transparent, ), ); final preferences = await SharedPreferences.getInstance(); final settings = SettingsRepository(preferences); final platform = NativeBridge(); final telemetry = NativeTelemetryBridge(); final themeController = ThemeController(settings); final displayController = DisplayController(platform, settings); await displayController.initialize(); final launcherController = LauncherController(platform, settings) ..initialize(); final systemController = SystemController(platform); final obdController = ObdController(telemetry, settings)..initialize(); final gpsSpeedController = GpsSpeedController(telemetry); final updateController = UpdateController(platform); final weatherController = WeatherController(telemetry, settings) ..initialize(); final lockController = LockController(PinService(FlutterSecureStore())); await lockController.initialize(); runApp( MultiProvider( providers: [ ChangeNotifierProvider.value(value: themeController), ChangeNotifierProvider.value(value: displayController), ChangeNotifierProvider.value(value: launcherController), ChangeNotifierProvider.value(value: systemController), ChangeNotifierProvider.value(value: obdController), ChangeNotifierProvider.value(value: gpsSpeedController), ChangeNotifierProvider.value(value: weatherController), ChangeNotifierProvider.value(value: updateController), ChangeNotifierProvider.value(value: lockController), ], child: const CarDashApp(), ), ); }