import 'package:base_project/resources/app_colors.dart'; import 'package:base_project/routes/route_names.dart'; import 'package:base_project/view_model/auth/auth_view_model.dart'; import 'package:base_project/view_model/profile/profile_view_model.dart'; import 'package:base_project/view_model/system_params/system_params_view_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'core/providers/dynamic_theme_provider.dart'; import 'core/providers/locale_provider.dart'; import 'core/providers/theme_provider.dart'; import 'core/providers/timezone_provider.dart'; import 'core/theme/app_theme.dart'; import 'package:timezone/data/latest_all.dart' as tzdata; import 'l10n/app_localizations.dart'; import 'routes/app_routes.dart'; import 'utils/managers/user_manager.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await UserManager().initialize(); final localeProvider = LocaleProvider(); await localeProvider.initialize(); // Time-zone display prefs (local-only v1): IANA DB + persisted selection. tzdata.initializeTimeZones(); final timezoneProvider = TimezoneProvider(); await timezoneProvider.initialize(); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); runApp(MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => AuthViewModel()), ChangeNotifierProvider(create: (context) => ProfileViewModel()), ChangeNotifierProvider(create: (context) => SystemParamsViewModel()), ChangeNotifierProvider(create: (context) => ThemeProvider()), ChangeNotifierProvider(create: (context) => DynamicThemeProvider()), ChangeNotifierProvider.value(value: localeProvider), ChangeNotifierProvider.value(value: timezoneProvider), ], child: const MyApp(), )); } final GlobalKey navigatorKey = GlobalKey(); class MyApp extends StatelessWidget { const MyApp({super.key}); // @override // Widget build(BuildContext context) { // // Set the navigation bar color when the app starts // SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( // systemNavigationBarColor: // AppColors.primary, // Set your desired color here // systemNavigationBarIconBrightness: Brightness.light, // Icons color // )); // return MaterialApp( // theme: ThemeData( // primaryColor: AppColors.primary, // visualDensity: VisualDensity.adaptivePlatformDensity, // useMaterial3: false, // scaffoldBackgroundColor: Colors.grey[200], // drawerTheme: DrawerThemeData(backgroundColor: Colors.grey[200]), // iconTheme: const IconThemeData(color: AppColors.primary), // appBarTheme: const AppBarTheme( // scrolledUnderElevation: 0, backgroundColor: AppColors.primary)), // title: 'Base Project', // debugShowCheckedModeBanner: false, // // home: const SysParameter(), // initialRoute: RouteNames.splashView, // onGenerateRoute: AppRoutes.generateRoutes, // ); // } // } @override Widget build(BuildContext context) { return Consumer3( builder: (context, themeProvider, dynamicThemeProvider, localeProvider, child) { final theme = AppTheme.getTheme(context); // Set system UI overlay style SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: Colors.transparent, statusBarIconBrightness: themeProvider.isDarkMode ? Brightness.light : Brightness.dark, systemNavigationBarColor: theme.colorScheme.surface, systemNavigationBarIconBrightness: themeProvider.isDarkMode ? Brightness.light : Brightness.dark, )); return MaterialApp( title: 'AuthSec Flutter', debugShowCheckedModeBanner: false, theme: AppTheme.getLightTheme(context), darkTheme: AppTheme.getDarkTheme(context), themeMode: themeProvider.isDarkMode ? ThemeMode.dark : ThemeMode.light, initialRoute: RouteNames.splashView, onGenerateRoute: AppRoutes.generateRoutes, navigatorKey: navigatorKey, locale: localeProvider.locale, supportedLocales: AppLocalizations.supportedLocales, localizationsDelegates: AppLocalizations.localizationsDelegates, builder: (context, child) { return MediaQuery( data: MediaQuery.of(context).copyWith( textScaler: MediaQuery.of(context).textScaler.clamp( minScaleFactor: 0.8, maxScaleFactor: 1.4, ), ), child: child!, ); }, ); }, ); } }