import 'package:flutter/material.dart'; import 'package:p_tits_pas/widgets/admin/am_dossier_wizard.dart'; /// Modale de création dossier AM (#156) — même shell que [ValidationDossierModal]. class AmDossierCreateModal extends StatefulWidget { final VoidCallback onClose; final VoidCallback? onSuccess; const AmDossierCreateModal({ super.key, required this.onClose, this.onSuccess, }); @override State createState() => _AmDossierCreateModalState(); } class _AmDossierCreateModalState extends State { int? _stepIndex; int? _stepTotal; void _onStepChanged(int step, int total) { if (!mounted) return; setState(() { _stepIndex = step; _stepTotal = total; }); } void _onSuccess() { widget.onSuccess?.call(); } static const double _modalWidth = 930; /// Hauteur calculée depuis 4 lignes de TF (voir [AmDossierWizard.shellBodyHeight]). static double get _bodyHeight => AmDossierWizard.shellBodyHeight; @override Widget build(BuildContext context) { final maxH = MediaQuery.of(context).size.height * 0.85; final showStep = _stepIndex != null && _stepTotal != null && (_stepTotal ?? 0) > 0; return Dialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), child: ConstrainedBox( constraints: BoxConstraints(maxWidth: _modalWidth, maxHeight: maxH), child: Column( mainAxisSize: MainAxisSize.min, children: [ Row( children: [ const Padding( padding: EdgeInsets.fromLTRB(18, 18, 0, 12), child: Text( 'Nouvelle assistante maternelle', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w700), ), ), const Spacer(), if (showStep) ...[ Text( 'Étape ${(_stepIndex ?? 0) + 1}/${_stepTotal ?? 1}', style: Theme.of(context).textTheme.titleSmall?.copyWith( color: Colors.black54, fontStyle: FontStyle.italic, ), ), const SizedBox(width: 8), ], IconButton( icon: const Icon(Icons.close), onPressed: widget.onClose, tooltip: 'Fermer', ), ], ), const Divider(height: 1), SizedBox( height: _bodyHeight, child: AmDossierWizard.create( onClose: widget.onClose, onSuccess: _onSuccess, onStepChanged: _onStepChanged, ), ), ], ), ), ); } }