From 90d8fa86690bcbbb6c68b3d4e36eeb53609d3a3d Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Mon, 1 Dec 2025 23:36:02 +0100 Subject: [PATCH] =?UTF-8?q?feat(#37):=20Inscription=20Parent=20-=20=C3=89t?= =?UTF-8?q?ape=202=20(Parent=202)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Frontend Step2: - Suppression des champs mot de passe et confirmation - Correction de l'indicateur d'étape: 2/5 → 2/6 - Améliorations visuelles (mêmes que Step1): * Taille des labels: 18 → 22px * Taille de police des champs: 18 → 20px * Espacement entre champs: 20 → 32px * Meilleure répartition verticale avec spaceEvenly Note: Le champ password est conservé dans le modèle ParentData pour compatibilité --- .../parent/parent_register_step2_screen.dart | 63 ++++++++----------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/frontend/lib/screens/auth/parent/parent_register_step2_screen.dart b/frontend/lib/screens/auth/parent/parent_register_step2_screen.dart index 38879fc..219a519 100644 --- a/frontend/lib/screens/auth/parent/parent_register_step2_screen.dart +++ b/frontend/lib/screens/auth/parent/parent_register_step2_screen.dart @@ -22,16 +22,14 @@ class _ParentRegisterStep2ScreenState extends State { bool _addParent2 = true; // Pour le test, on ajoute toujours le parent 2 bool _sameAddressAsParent1 = false; // Peut être généré aléatoirement aussi - // Contrôleurs pour les champs du parent 2 (restauration CP et Ville) + // Contrôleurs pour les champs du parent 2 final _lastNameController = TextEditingController(); final _firstNameController = TextEditingController(); final _phoneController = TextEditingController(); final _emailController = TextEditingController(); - final _passwordController = TextEditingController(); - final _confirmPasswordController = TextEditingController(); - final _addressController = TextEditingController(); // Rue seule - final _postalCodeController = TextEditingController(); // Restauré - final _cityController = TextEditingController(); // Restauré + final _addressController = TextEditingController(); + final _postalCodeController = TextEditingController(); + final _cityController = TextEditingController(); @override void initState() { @@ -49,17 +47,13 @@ class _ParentRegisterStep2ScreenState extends State { _lastNameController.text = genLastName; _phoneController.text = DataGenerator.phone(); _emailController.text = DataGenerator.email(genFirstName, genLastName); - _passwordController.text = DataGenerator.password(); - _confirmPasswordController.text = _passwordController.text; _sameAddressAsParent1 = DataGenerator.boolean(); if (!_sameAddressAsParent1) { - // Générer adresse, CP, Ville séparément _addressController.text = DataGenerator.address(); _postalCodeController.text = DataGenerator.postalCode(); _cityController.text = DataGenerator.city(); } else { - // Vider les champs si même adresse (seront désactivés) _addressController.clear(); _postalCodeController.clear(); _cityController.clear(); @@ -72,8 +66,6 @@ class _ParentRegisterStep2ScreenState extends State { _firstNameController.dispose(); _phoneController.dispose(); _emailController.dispose(); - _passwordController.dispose(); - _confirmPasswordController.dispose(); _addressController.dispose(); _postalCodeController.dispose(); _cityController.dispose(); @@ -98,7 +90,7 @@ class _ParentRegisterStep2ScreenState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Text('Étape 2/5', style: GoogleFonts.merienda(fontSize: 16, color: Colors.black54)), + Text('Étape 2/6', style: GoogleFonts.merienda(fontSize: 16, color: Colors.black54)), const SizedBox(height: 10), Text( 'Informations du Deuxième Parent (Optionnel)', @@ -117,7 +109,9 @@ class _ParentRegisterStep2ScreenState extends State { child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + const SizedBox(height: 10), Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -156,40 +150,33 @@ class _ParentRegisterStep2ScreenState extends State { ]), ), ]), - const SizedBox(height: 25), + const SizedBox(height: 32), Row( children: [ - Expanded(flex: 12, child: CustomAppTextField(controller: _lastNameController, labelText: 'Nom', hintText: 'Nom du parent 2', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), - Expanded(flex: 1, child: const SizedBox()), // Espace de 4% - Expanded(flex: 12, child: CustomAppTextField(controller: _firstNameController, labelText: 'Prénom', hintText: 'Prénom du parent 2', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), + Expanded(flex: 12, child: CustomAppTextField(controller: _lastNameController, labelText: 'Nom', hintText: 'Nom du parent 2', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), + Expanded(flex: 1, child: const SizedBox()), + Expanded(flex: 12, child: CustomAppTextField(controller: _firstNameController, labelText: 'Prénom', hintText: 'Prénom du parent 2', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), ], ), - const SizedBox(height: 20), + const SizedBox(height: 32), Row( children: [ - Expanded(flex: 12, child: CustomAppTextField(controller: _phoneController, labelText: 'Téléphone', keyboardType: TextInputType.phone, hintText: 'Son téléphone', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), - Expanded(flex: 1, child: const SizedBox()), // Espace de 4% - Expanded(flex: 12, child: CustomAppTextField(controller: _emailController, labelText: 'Email', keyboardType: TextInputType.emailAddress, hintText: 'Son email', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), + Expanded(flex: 12, child: CustomAppTextField(controller: _phoneController, labelText: 'Téléphone', keyboardType: TextInputType.phone, hintText: 'Son téléphone', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), + Expanded(flex: 1, child: const SizedBox()), + Expanded(flex: 12, child: CustomAppTextField(controller: _emailController, labelText: 'Email', keyboardType: TextInputType.emailAddress, hintText: 'Son email', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), ], ), - const SizedBox(height: 20), + const SizedBox(height: 32), + CustomAppTextField(controller: _addressController, labelText: 'Adresse (N° et Rue)', hintText: 'Son numéro et nom de rue', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0), + const SizedBox(height: 32), Row( children: [ - Expanded(flex: 12, child: CustomAppTextField(controller: _passwordController, labelText: 'Mot de passe', obscureText: true, hintText: 'Son mot de passe', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, validator: _addParent2 ? (v) => (v == null || v.isEmpty ? 'Requis' : (v.length < 6 ? '6 car. min' : null)) : null)), - Expanded(flex: 1, child: const SizedBox()), // Espace de 4% - Expanded(flex: 12, child: CustomAppTextField(controller: _confirmPasswordController, labelText: 'Confirmation', obscureText: true, hintText: 'Confirmer mot de passe', enabled: _parent2FieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, validator: _addParent2 ? (v) => (v == null || v.isEmpty ? 'Requis' : (v != _passwordController.text ? 'Différent' : null)) : null)), - ], - ), - const SizedBox(height: 20), - CustomAppTextField(controller: _addressController, labelText: 'Adresse (N° et Rue)', hintText: 'Son numéro et nom de rue', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity), - const SizedBox(height: 20), - Row( - children: [ - Expanded(flex: 1, child: CustomAppTextField(controller: _postalCodeController, labelText: 'Code Postal', keyboardType: TextInputType.number, hintText: 'Son code postal', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), + Expanded(flex: 1, child: CustomAppTextField(controller: _postalCodeController, labelText: 'Code Postal', keyboardType: TextInputType.number, hintText: 'Son code postal', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), const SizedBox(width: 20), - Expanded(flex: 4, child: CustomAppTextField(controller: _cityController, labelText: 'Ville', hintText: 'Sa ville', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity)), + Expanded(flex: 4, child: CustomAppTextField(controller: _cityController, labelText: 'Ville', hintText: 'Sa ville', enabled: _addressFieldsEnabled, style: CustomAppTextFieldStyle.beige, fieldWidth: double.infinity, labelFontSize: 22.0, inputFontSize: 20.0)), ], ), + const SizedBox(height: 10), ], ), ), @@ -225,7 +212,7 @@ class _ParentRegisterStep2ScreenState extends State { city: _sameAddressAsParent1 ? _registrationData.parent1.city : _cityController.text, phone: _phoneController.text, email: _emailController.text, - password: _passwordController.text, + password: '', // Pas de mot de passe à cette étape ) ); } else { @@ -244,8 +231,10 @@ class _ParentRegisterStep2ScreenState extends State { void _clearParent2Fields() { _formKey.currentState?.reset(); - _lastNameController.clear(); _firstNameController.clear(); _phoneController.clear(); - _emailController.clear(); _passwordController.clear(); _confirmPasswordController.clear(); + _lastNameController.clear(); + _firstNameController.clear(); + _phoneController.clear(); + _emailController.clear(); _addressController.clear(); _postalCodeController.clear(); _cityController.clear(); -- 2.47.2