Refactorisation complète du parcours d'inscription des parents pour utiliser Provider au lieu du passage de données par paramètres de navigation. Modifications principales : - Utilisation de Provider pour partager UserRegistrationData entre les étapes - Simplification du routeur (suppression des paramètres) - Amélioration de la persistance des données entre les étapes - Meilleure expérience utilisateur lors de la navigation Fichiers modifiés : - models/user_registration_data.dart : Modèle avec ChangeNotifier - screens/auth/parent_register_step1-5_screen.dart : Intégration Provider - navigation/app_router.dart : Simplification du routing - main.dart : Configuration du Provider - login_screen.dart : Ajout navigation vers inscription - register_choice_screen.dart : Navigation vers parcours parent/AM - utils/data_generator.dart : Génération de données de test Refs: #38 (Étape 3 Enfants), #39 (Étapes 4-6 Finalisation)
This commit is contained in:
@@ -7,31 +7,50 @@ import 'package:p_tits_pas/widgets/app_custom_checkbox.dart'; // Import de la ch
|
||||
import '../../models/user_registration_data.dart'; // Import du vrai modèle
|
||||
import '../../utils/data_generator.dart'; // Import du générateur
|
||||
import '../../models/card_assets.dart'; // Import des enums de cartes
|
||||
import 'package:provider/provider.dart'; // Assurer l'import
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
class ParentRegisterStep4Screen extends StatefulWidget {
|
||||
final UserRegistrationData registrationData; // Accepte les données
|
||||
// final UserRegistrationData registrationData; // Supprimé
|
||||
|
||||
const ParentRegisterStep4Screen({super.key, required this.registrationData});
|
||||
const ParentRegisterStep4Screen({super.key /*, required this.registrationData */}); // Modifié
|
||||
|
||||
@override
|
||||
State<ParentRegisterStep4Screen> createState() => _ParentRegisterStep4ScreenState();
|
||||
_ParentRegisterStep4ScreenState createState() =>
|
||||
_ParentRegisterStep4ScreenState();
|
||||
}
|
||||
|
||||
class _ParentRegisterStep4ScreenState extends State<ParentRegisterStep4Screen> {
|
||||
late UserRegistrationData _registrationData; // État local
|
||||
// late UserRegistrationData _registrationData; // Supprimé
|
||||
final _motivationController = TextEditingController();
|
||||
bool _cguAccepted = true; // Pour le test, CGU acceptées par défaut
|
||||
final _bankNameController = TextEditingController();
|
||||
final _ibanController = TextEditingController();
|
||||
final _bicController = TextEditingController();
|
||||
final _attestationController = TextEditingController();
|
||||
bool _consentQuotientFamilial = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_registrationData = widget.registrationData;
|
||||
_motivationController.text = DataGenerator.motivation(); // Générer la motivation
|
||||
final registrationData = Provider.of<UserRegistrationData>(context, listen: false);
|
||||
// _registrationData = registrationData; // Supprimé
|
||||
_motivationController.text = registrationData.motivationText.isNotEmpty ? registrationData.motivationText : DataGenerator.motivation();
|
||||
_bankNameController.text = registrationData.bankDetails?.bankName ?? '';
|
||||
_ibanController.text = registrationData.bankDetails?.iban ?? '';
|
||||
_bicController.text = registrationData.bankDetails?.bic ?? '';
|
||||
_attestationController.text = registrationData.attestationCafNumber;
|
||||
_consentQuotientFamilial = registrationData.consentQuotientFamilial;
|
||||
_cguAccepted = registrationData.cguAccepted;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_motivationController.dispose();
|
||||
_bankNameController.dispose();
|
||||
_ibanController.dispose();
|
||||
_bicController.dispose();
|
||||
_attestationController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -100,6 +119,7 @@ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lo
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final registrationData = Provider.of<UserRegistrationData>(context, listen: false); // listen:false car on met à jour
|
||||
final screenSize = MediaQuery.of(context).size;
|
||||
final cardWidth = screenSize.width * 0.6; // Largeur de la carte (60% de l'écran)
|
||||
final double imageAspectRatio = 2.0; // Ratio corrigé (1024/512 = 2.0)
|
||||
@@ -186,7 +206,13 @@ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lo
|
||||
left: 40,
|
||||
child: IconButton(
|
||||
icon: Transform(alignment: Alignment.center, transform: Matrix4.rotationY(math.pi), child: Image.asset('assets/images/chevron_right.png', height: 40)),
|
||||
onPressed: () => Navigator.pop(context),
|
||||
onPressed: () {
|
||||
if (context.canPop()) {
|
||||
context.pop();
|
||||
} else {
|
||||
context.go('/parent-register-step3');
|
||||
}
|
||||
},
|
||||
tooltip: 'Retour',
|
||||
),
|
||||
),
|
||||
@@ -197,14 +223,18 @@ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lo
|
||||
icon: Image.asset('assets/images/chevron_right.png', height: 40),
|
||||
onPressed: _cguAccepted
|
||||
? () {
|
||||
_registrationData.updateMotivation(_motivationController.text);
|
||||
_registrationData.acceptCGU();
|
||||
|
||||
Navigator.pushNamed(
|
||||
context,
|
||||
'/parent-register/step5',
|
||||
arguments: _registrationData
|
||||
registrationData.updateMotivation(_motivationController.text);
|
||||
registrationData.acceptCGU(_cguAccepted);
|
||||
registrationData.updateFinancialInfo(
|
||||
bankDetails: BankDetails(
|
||||
bankName: _bankNameController.text,
|
||||
iban: _ibanController.text,
|
||||
bic: _bicController.text,
|
||||
),
|
||||
attestationCafNumber: _attestationController.text,
|
||||
consentQuotientFamilial: _consentQuotientFamilial,
|
||||
);
|
||||
context.go('/parent-register-step5');
|
||||
}
|
||||
: null,
|
||||
tooltip: 'Suivant',
|
||||
|
||||
Reference in New Issue
Block a user