import 'package:flutter/material.dart'; import 'package:afterwork/presentation/screens/login/login_screen.dart'; import 'package:afterwork/presentation/screens/story/story_screen.dart'; import 'package:afterwork/presentation/screens/profile/profile_screen.dart'; import 'package:afterwork/presentation/screens/settings/settings_screen.dart'; import 'package:afterwork/presentation/screens/home/home_screen.dart'; import 'package:afterwork/presentation/screens/event/event_screen.dart'; import 'package:afterwork/data/datasources/event_remote_data_source.dart'; import '../presentation/reservations/reservations_screen.dart'; /// [AppRouter] gère la navigation dans l'application. /// Chaque navigation est loguée pour assurer une traçabilité dans la console. class AppRouter { final EventRemoteDataSource eventRemoteDataSource; final String userId; final String userName; final String userLastName; /// Constructeur de [AppRouter] initialisant les informations utilisateur /// et la source de données pour les événements. /// /// [eventRemoteDataSource] : Source de données pour les événements. /// [userId], [userName], [userLastName] : Informations de l'utilisateur. AppRouter({ required this.eventRemoteDataSource, required this.userId, required this.userName, required this.userLastName, }) { // Log d'initialisation avec les informations utilisateur debugPrint("[LOG] AppRouter initialisé avec les infos utilisateur : $userId, $userName, $userLastName"); } /// Génère une route en fonction du [RouteSettings] fourni. /// /// Logue chaque navigation en fonction du nom de la route. Route generateRoute(RouteSettings settings) { // Log de la navigation vers la route debugPrint("[LOG] Navigation vers la route : ${settings.name}"); switch (settings.name) { case '/': debugPrint("[LOG] Chargement de l'écran de connexion"); return MaterialPageRoute(builder: (_) => const LoginScreen()); case '/home': debugPrint("[LOG] Chargement de l'écran d'accueil avec l'ID utilisateur : $userId"); return MaterialPageRoute( builder: (_) => HomeScreen( eventRemoteDataSource: eventRemoteDataSource, userId: userId, userName: userName, userLastName: userLastName, userProfileImage: 'lib/assets/images/profile_picture.png', ), ); case '/event': debugPrint("[LOG] Chargement de l'écran d'événement pour l'utilisateur : $userId"); return MaterialPageRoute( builder: (_) => EventScreen( userId: userId, userName: userName, userLastName: userLastName, ), ); case '/story': debugPrint("[LOG] Chargement de l'écran des histoires"); return MaterialPageRoute(builder: (_) => const StoryScreen()); case '/profile': debugPrint("[LOG] Chargement de l'écran du profil"); return MaterialPageRoute(builder: (_) => const ProfileScreen()); case '/settings': debugPrint("[LOG] Chargement de l'écran des paramètres"); return MaterialPageRoute(builder: (_) => const SettingsScreen()); case '/reservations': debugPrint("[LOG] Chargement de l'écran des réservations"); return MaterialPageRoute(builder: (_) => const ReservationsScreen()); default: debugPrint("[ERROR] Route non trouvée : ${settings.name}"); return MaterialPageRoute( builder: (_) => const Scaffold( body: Center( child: Text('Page non trouvée'), ), ), ); } } }