feat(#140): liste enfants unifiée — cartes, âge précis et cadre scrollable

Partage AdminEnfantUserCard entre fiche parent et onglet Enfants, enrichit ParentChildSummary (photo, dates) et compacte la modale parent.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-24 23:06:38 +02:00
co-authored by Cursor
parent 8494341b56
commit 966f4a9c9c
6 changed files with 435 additions and 129 deletions
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:p_tits_pas/models/enfant_admin_model.dart';
import 'package:p_tits_pas/services/user_service.dart';
import 'package:p_tits_pas/widgets/admin/common/admin_child_detail_modal.dart';
import 'package:p_tits_pas/widgets/admin/common/admin_user_card.dart';
import 'package:p_tits_pas/widgets/admin/common/admin_enfant_user_card.dart';
import 'package:p_tits_pas/widgets/admin/common/user_list.dart';
/// Onglet liste globale des enfants (doc 28 §6.2, ticket #137).
@@ -52,19 +52,6 @@ class _EnfantManagementWidgetState extends State<EnfantManagementWidget> {
}
}
String _statusLabel(String status) {
switch (status) {
case 'a_naitre':
return 'À naître';
case 'actif':
return 'Actif';
case 'scolarise':
return 'Scolarisé';
default:
return status;
}
}
Future<void> _openEnfant(EnfantAdminModel enfant) async {
await showDialog<void>(
context: context,
@@ -93,19 +80,8 @@ class _EnfantManagementWidgetState extends State<EnfantManagementWidget> {
itemCount: filtered.length,
itemBuilder: (context, index) {
final enfant = filtered[index];
final parents = enfant.parentLinks
.map((l) => l.parentName ?? 'Parent')
.join(', ');
return AdminUserCard(
title: enfant.fullName,
fallbackIcon: Icons.child_care_outlined,
avatarUrl: enfant.photoUrl,
subtitleLines: [
'Statut : ${_statusLabel(enfant.status)}',
if (enfant.birthDate != null && enfant.birthDate!.isNotEmpty)
'Naissance : ${enfant.birthDate}',
if (parents.isNotEmpty) 'Responsables : $parents',
],
return AdminEnfantUserCard.fromEnfant(
enfant,
actions: [
IconButton(
icon: const Icon(Icons.visibility_outlined),