feat(admin): validation AM/famille, À valider au survol, nettoyage logs

- À valider : ligne avec survol type AdminUserCard, icône Ouvrir centrée et plus grande (iconSize 34).
- Wizard AM : titres Identité et coordonnées / Dossier professionnel / Présentation ; photo à gauche, grille droite [2,2,2,2] (NIR, naissance, agrément, capacité) ; AppUser champs naissance ; dates dd/MM/yyyy via formatIsoDateFr ; ValidationDetailSection titre optionnel.
- Wizard famille : titre étape 4 « Présentation ».
- Suppression des debugPrint liés médias / images / dossier (api_config, auth_network_image, dossier_unifie, user_service, validation_family).

Made-with: Cursor
This commit is contained in:
2026-04-13 17:22:08 +02:00
parent f442c85cb6
commit 0befd4eb2a
10 changed files with 212 additions and 199 deletions
@@ -5,7 +5,8 @@ import 'admin_detail_modal.dart';
/// [rowLayout] : même disposition que la création de compte, ex. [2, 2, 1, 2] = ligne de 2, ligne de 2, plein largeur, ligne de 2.
/// [rowFlex] : flex par index de ligne (optionnel). Ex. {3: [2, 5]} = 4e ligne : code postal étroit (2), ville large (5).
class ValidationDetailSection extends StatelessWidget {
final String title;
/// Si null ou vide, pas de bandeau titre (gain de place vertical, ex. wizard AM).
final String? title;
final List<AdminDetailField> fields;
/// Nombre de champs par ligne (1 = plein largeur, 2 = deux côte à côte). Ex. [2, 2, 1, 2] pour identité.
@@ -16,7 +17,7 @@ class ValidationDetailSection extends StatelessWidget {
const ValidationDetailSection({
super.key,
required this.title,
this.title,
required this.fields,
this.rowLayout,
this.rowFlex,
@@ -60,19 +61,22 @@ class ValidationDetailSection extends StatelessWidget {
));
}
}
final showTitle = title != null && title!.trim().isNotEmpty;
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: [
Text(
title,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Colors.black87,
if (showTitle) ...[
Text(
title!.trim(),
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Colors.black87,
),
),
),
const SizedBox(height: 12),
const SizedBox(height: 12),
],
...rows,
],
);