import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'theme.dart'; import 'providers/providers.dart'; import 'pages/login_page.dart'; import 'pages/routes_page.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); runApp( const ProviderScope( child: PlanBLogisticApp(), ), ); } class PlanBLogisticApp extends ConsumerWidget { const PlanBLogisticApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final language = ref.watch(languageProvider); final themeMode = ref.watch(themeModeProvider); return MaterialApp( title: 'Plan B Logistics', theme: MaterialTheme(const TextTheme()).light(), darkTheme: MaterialTheme(const TextTheme()).dark(), themeMode: themeMode, locale: Locale(language), localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('en', ''), Locale('fr', ''), ], home: const AppHome(), ); } } class AppHome extends ConsumerWidget { const AppHome({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final isAuthenticatedAsync = ref.watch(isAuthenticatedProvider); // Update iOS system UI to match current theme final brightness = Theme.of(context).brightness; final isDark = brightness == Brightness.dark; SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( statusBarBrightness: isDark ? Brightness.dark : Brightness.light, statusBarIconBrightness: isDark ? Brightness.light : Brightness.dark, systemNavigationBarColor: isDark ? Colors.black : Colors.white, systemNavigationBarIconBrightness: isDark ? Brightness.light : Brightness.dark, ), ); return isAuthenticatedAsync.when( data: (isAuthenticated) { if (isAuthenticated) { return const RoutesPage(); } else { return const LoginPage(); } }, loading: () => const Scaffold( body: Center( child: CircularProgressIndicator(), ), ), error: (error, stackTrace) => const LoginPage(), ); } }