2025-09-09 03:52:13 +00:00

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!,
);
},
);
},
);
}
}