import 'package:em2rp/utils/auth_guard_widget.dart'; import 'package:em2rp/view_model/user_management_view_model.dart'; import 'package:em2rp/views/calendar_page.dart'; import 'package:em2rp/views/login_page.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; import 'utils/colors.dart'; import 'views/my_account_page.dart'; import 'views/user_management_page.dart'; import 'package:provider/provider.dart'; import 'providers/user_provider.dart'; import 'providers/local_auth_provider.dart'; // Ajout de l'AuthProvider import 'services/user_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); await FirebaseAuth.instance.setPersistence(Persistence.LOCAL); runApp( MultiProvider( providers: [ // Injection du service UserService Provider(create: (_) => UserService()), // AuthProvider pour la gestion de l'authentification ChangeNotifierProvider( create: (context) => LocalAuthProvider()), // UserProvider déjà existant ChangeNotifierProvider( create: (context) => UserProvider()), // Injection des ViewModels en utilisant UserService et AuthProvider ChangeNotifierProvider( create: (context) => UserManagementViewModel(context.read()), ), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { print("test"); return MaterialApp( title: 'EM2 ERP', theme: ThemeData( primarySwatch: Colors.red, primaryColor: AppColors.noir, colorScheme: ColorScheme.fromSwatch().copyWith(secondary: AppColors.rouge), textTheme: const TextTheme( bodyMedium: TextStyle(color: AppColors.noir), ), inputDecorationTheme: InputDecorationTheme( focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: AppColors.noir), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: AppColors.gris), ), labelStyle: TextStyle(color: AppColors.noir), hintStyle: TextStyle(color: AppColors.gris), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( foregroundColor: AppColors.blanc, backgroundColor: AppColors.noir, ), ), ), routes: { '/login': (context) => const LoginPage(), '/calendar': (context) => const AuthGuard(child: CalendarPage()), '/my_account': (context) => const AuthGuard(child: MyAccountPage()), '/user_management': (context) => const AuthGuard(requiredRole: "ADMIN", child: UserManagementPage()), }, initialRoute: '/login', ); } }