refactor(inscription): Refonte complète du processus d'inscription - Modèles etdonnées: Suppression de placeholder_registration_data.dart, ajout de user_registration_data.dart, data_generator.dart et card_assets.dart - Interface utilisateur: Refonte des écrans d'inscription, amélioration des widgets, ajout de cartes colorées - Assets: Ajout de nouvelles cartes colorées - Configuration: Mise à jour de pubspec.yaml et app_router.dart
This commit is contained in:
@@ -3,18 +3,30 @@ import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:p_tits_pas/widgets/custom_decorated_text_field.dart'; // Import du nouveau widget
|
||||
import 'dart:math' as math; // Pour la rotation du chevron
|
||||
import 'package:p_tits_pas/widgets/app_custom_checkbox.dart'; // Import de la checkbox personnalisée
|
||||
import 'package:p_tits_pas/models/placeholder_registration_data.dart';
|
||||
// import 'package:p_tits_pas/models/placeholder_registration_data.dart'; // Remplacé
|
||||
import '../../models/user_registration_data.dart'; // Import du vrai modèle
|
||||
import '../../utils/data_generator.dart'; // Import du générateur
|
||||
|
||||
class ParentRegisterStep4Screen extends StatefulWidget {
|
||||
const ParentRegisterStep4Screen({super.key});
|
||||
final UserRegistrationData registrationData; // Accepte les données
|
||||
|
||||
const ParentRegisterStep4Screen({super.key, required this.registrationData});
|
||||
|
||||
@override
|
||||
State<ParentRegisterStep4Screen> createState() => _ParentRegisterStep4ScreenState();
|
||||
}
|
||||
|
||||
class _ParentRegisterStep4ScreenState extends State<ParentRegisterStep4Screen> {
|
||||
late UserRegistrationData _registrationData; // État local
|
||||
final _motivationController = TextEditingController();
|
||||
bool _cguAccepted = false;
|
||||
bool _cguAccepted = true; // Pour le test, CGU acceptées par défaut
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_registrationData = widget.registrationData;
|
||||
_motivationController.text = DataGenerator.motivation(); // Générer la motivation
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
@@ -113,7 +125,7 @@ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lo
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Text(
|
||||
'Merci de motiver votre demande création de compte :',
|
||||
'Motivation de votre demande',
|
||||
style: GoogleFonts.merienda(fontSize: 22, fontWeight: FontWeight.bold, color: Colors.black87),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -132,35 +144,23 @@ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lo
|
||||
const SizedBox(height: 30),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
// Si on clique sur la zone et que ce n'est pas encore accepté,
|
||||
// ou si c'est déjà accepté (l'utilisateur veut peut-être revoir les CGU)
|
||||
_showCGUModal();
|
||||
if (!_cguAccepted) {
|
||||
_showCGUModal();
|
||||
}
|
||||
},
|
||||
child: AppCustomCheckbox(
|
||||
label: 'J\'accepte les conditions générales d\'utilisation',
|
||||
value: _cguAccepted,
|
||||
onChanged: (newValue) {
|
||||
// La logique d'ouverture de la modale est déclenchée par le GestureDetector externe.
|
||||
// La modale mettra à jour _cguAccepted et reconstruira le widget.
|
||||
// Si newValue est true (ce qui signifie que la modale a été acceptée et _cguAccepted mis à jour),
|
||||
// on n'a rien à faire de plus ici.
|
||||
// Si newValue est false (l'utilisateur a réussi à la décocher d'une manière ou d'une autre,
|
||||
// ce qui ne devrait pas arriver car on ouvre toujours la modale),
|
||||
// on pourrait vouloir forcer l'affichage de la modale aussi.
|
||||
// Pour l'instant, on se fie au fait que la modale gère l'acceptation.
|
||||
if (!_cguAccepted) { // Si pas encore accepté, la modale doit s'ouvrir
|
||||
_showCGUModal();
|
||||
} else if (newValue == false) { // Si on essaie de décocher
|
||||
// Optionnel: Forcer la non-acceptation et rouvrir la modale ?
|
||||
// Pour l'instant, on ne fait rien, la modale gère.
|
||||
if (!_cguAccepted) {
|
||||
_showCGUModal();
|
||||
} else {
|
||||
setState(() => _cguAccepted = false);
|
||||
}
|
||||
},
|
||||
// Vous pouvez ajuster checkboxSize et checkmarkSizeFactor si nécessaire
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 40),
|
||||
// On ajoutera un Form et un bouton de soumission principal plus tard
|
||||
// Pour l'instant, les chevrons servent à la navigation simple
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -182,19 +182,16 @@ 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
|
||||
? () {
|
||||
print('Motivation: ${_motivationController.text}');
|
||||
print('CGU acceptées: $_cguAccepted');
|
||||
|
||||
// TODO: Rassembler toutes les données des étapes précédentes
|
||||
final dummyData = PlaceholderRegistrationData(parent1Name: "Parent 1 Nom (Exemple)");
|
||||
_registrationData.updateMotivation(_motivationController.text);
|
||||
_registrationData.acceptCGU();
|
||||
|
||||
Navigator.pushNamed(
|
||||
context,
|
||||
'/parent-register/step5',
|
||||
arguments: dummyData // Passer les données (ici factices)
|
||||
arguments: _registrationData
|
||||
);
|
||||
}
|
||||
: null, // Désactiver si les CGU ne sont pas acceptées
|
||||
: null,
|
||||
tooltip: 'Suivant',
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user