feat(inscription): email accusé réception, photos enfants, formulaires identité

- Backend: mail après inscription parent avec n° dossier, UPLOAD_PHOTOS_DIR, réponse API
- Frontend: imageBytes + payload photo, utils email/code postal/téléphone, champs dédiés
- Formulaires admin, login (focus), personal_info, child_card, custom_app_text_field

Made-with: Cursor
This commit is contained in:
2026-03-31 00:04:38 +02:00
parent 110240b682
commit bf05b1d7d7
20 changed files with 1148 additions and 273 deletions
@@ -29,6 +29,7 @@ class ParentData {
class ChildData {
static const Object _unsetImage = Object();
static const Object _unsetImageBytes = Object();
String firstName;
String lastName;
@@ -39,6 +40,8 @@ class ChildData {
bool multipleBirth;
bool isUnbornChild;
File? imageFile;
/// Octets de la photo (fiable à lenvoi API ; [imageFile] peut être absent sur le web).
Uint8List? imageBytes;
CardColorVertical cardColor; // Nouveau champ pour la couleur de la carte
ChildData({
@@ -50,6 +53,7 @@ class ChildData {
this.multipleBirth = false,
this.isUnbornChild = false,
this.imageFile,
this.imageBytes,
required this.cardColor, // Rendre requis dans le constructeur
});
@@ -62,6 +66,7 @@ class ChildData {
bool? multipleBirth,
bool? isUnbornChild,
Object? imageFile = _unsetImage,
Object? imageBytes = _unsetImageBytes,
CardColorVertical? cardColor,
}) {
return ChildData(
@@ -73,6 +78,8 @@ class ChildData {
multipleBirth: multipleBirth ?? this.multipleBirth,
isUnbornChild: isUnbornChild ?? this.isUnbornChild,
imageFile: identical(imageFile, _unsetImage) ? this.imageFile : imageFile as File?,
imageBytes:
identical(imageBytes, _unsetImageBytes) ? this.imageBytes : imageBytes as Uint8List?,
cardColor: cardColor ?? this.cardColor,
);
}