Ce commit comprend plusieurs améliorations significatives :
Inscription Parent - Étape 5 (Récapitulatif) :
- Initialisation de l'écran pour l'étape 5/5 du parcours d'inscription parent.
- Mise en place de la structure de base de l'écran de récapitulatif (titre, fond, bouton de soumission initial, modale de confirmation).
- Intégration de la navigation vers l'étape 5 depuis l'étape 4, incluant le passage (actuellement factice) des données d'inscription.
- Correction des erreurs de navigation et de typage liées à l'introduction de `PlaceholderRegistrationData` pour cette nouvelle étape.
Refactorisation des Widgets UI :
- `CustomAppTextField` :
- Évolution majeure pour supporter différents styles de fond (beige, lavande, jaune) via un nouvel enum `CustomAppTextFieldStyle`.
- Les images de fond pour les styles lavande et jaune (`input_field_lavande.png`, `input_field_jaune.png`) ont été renommées et sont maintenant utilisées.
- Mise à jour de l'écran de login pour utiliser ce `CustomAppTextField` stylisé, remplaçant l'ancien widget privé `_ImageTextField`.
- Réintégration des paramètres `isRequired`, `enabled`, `readOnly`, `onTap`, et `suffixIcon` qui avaient été omis lors d'une refactorisation précédente, assurant la compatibilité avec l'étape 3.
- `ImageButton` :
- Extraction du widget privé `_ImageButton` de l'écran de login en un widget public `ImageButton` (dans `widgets/image_button.dart`) pour une réutilisation globale.
- Mise à jour de l'écran de login pour utiliser ce nouveau widget public.
- Utilisation du nouveau `ImageButton` pour le bouton "Soumettre ma demande" sur l'écran de l'étape 5.
Corrections :
- Correction d'une erreur de `RenderFlex overflowed` dans la carte enfant (`_ChildCardWidget`) de l'étape 3 de l'inscription parent, en ajustant les espacements internes.
- Résolution de diverses erreurs de compilation qui sont apparues pendant ces refactorisations.
94 lines
3.4 KiB
Dart
94 lines
3.4 KiB
Dart
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<dynamic> 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);
|
|
}
|
|
}
|
|
} |