import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import '../screens/auth/login_screen.dart'; import '../screens/auth/register_choice_screen.dart'; import '../screens/auth/parent_register_step1_screen.dart'; import '../screens/auth/parent_register_step2_screen.dart'; import '../screens/auth/parent_register_step3_screen.dart'; import '../screens/auth/parent_register_step4_screen.dart'; import '../screens/auth/parent_register_step5_screen.dart'; import '../screens/home/home_screen.dart'; import '../models/placeholder_registration_data.dart'; class AppRouter { static const String login = '/login'; static const String registerChoice = '/register-choice'; static const String parentRegisterStep1 = '/parent-register/step1'; static const String parentRegisterStep2 = '/parent-register/step2'; static const String parentRegisterStep3 = '/parent-register/step3'; static const String parentRegisterStep4 = '/parent-register/step4'; static const String parentRegisterStep5 = '/parent-register/step5'; static const String home = '/home'; static Route generateRoute(RouteSettings settings) { Widget screen; bool slideTransition = false; switch (settings.name) { case login: screen = const LoginPage(); break; case registerChoice: screen = const RegisterChoiceScreen(); slideTransition = true; // Activer la transition pour cet écran break; case parentRegisterStep1: screen = const ParentRegisterStep1Screen(); slideTransition = true; // Activer la transition pour cet écran break; case parentRegisterStep2: screen = const ParentRegisterStep2Screen(); slideTransition = true; break; case parentRegisterStep3: screen = const ParentRegisterStep3Screen(); slideTransition = true; break; case parentRegisterStep4: screen = const ParentRegisterStep4Screen(); slideTransition = true; break; case parentRegisterStep5: final args = settings.arguments as PlaceholderRegistrationData?; if (args != null) { screen = ParentRegisterStep5Screen(registrationData: args); } else { print("Erreur: Données d'inscription manquantes pour l'étape 5"); screen = const RegisterChoiceScreen(); } break; case home: screen = const HomeScreen(); break; default: screen = Scaffold( body: Center( child: Text('Route non définie : ${settings.name}'), ), ); } if (slideTransition) { return PageRouteBuilder( pageBuilder: (context, animation, secondaryAnimation) => screen, transitionsBuilder: (context, animation, secondaryAnimation, child) { const begin = Offset(1.0, 0.0); // Glisse depuis la droite const end = Offset.zero; const curve = Curves.easeInOut; // Animation douce var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve)); var offsetAnimation = animation.drive(tween); return SlideTransition( position: offsetAnimation, child: child, ); }, transitionDuration: const Duration(milliseconds: 400), // Durée de la transition ); } else { // Transition par défaut pour les autres écrans return MaterialPageRoute(builder: (_) => screen); } } }