105 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
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/theme_provider.dart';
 | 
						|
import 'core/theme/app_theme.dart';
 | 
						|
import 'routes/app_routes.dart';
 | 
						|
import 'utils/managers/user_manager.dart';
 | 
						|
 | 
						|
void main() async {
 | 
						|
  WidgetsFlutterBinding.ensureInitialized();
 | 
						|
  await UserManager().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()),
 | 
						|
    ],
 | 
						|
    child: const MyApp(),
 | 
						|
  ));
 | 
						|
}
 | 
						|
 | 
						|
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
 | 
						|
 | 
						|
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 Consumer2<ThemeProvider, DynamicThemeProvider>(
 | 
						|
      builder: (context, themeProvider, dynamicThemeProvider, 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,
 | 
						|
          builder: (context, child) {
 | 
						|
            return MediaQuery(
 | 
						|
              data: MediaQuery.of(context).copyWith(
 | 
						|
                textScaler: MediaQuery.of(context).textScaler.clamp(
 | 
						|
                      minScaleFactor: 0.8,
 | 
						|
                      maxScaleFactor: 1.4,
 | 
						|
                    ),
 | 
						|
              ),
 | 
						|
              child: child!,
 | 
						|
            );
 | 
						|
          },
 | 
						|
        );
 | 
						|
      },
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |