import 'package:flutter/material.dart'; /// Dialogue pour ajouter un nouvel événement. /// Ce widget affiche un formulaire permettant à l'utilisateur de saisir les détails d'un événement. /// Les logs permettent de suivre les actions de l'utilisateur dans ce dialogue. class AddEventDialog extends StatefulWidget { final String userId; final String userName; final String userLastName; const AddEventDialog({ Key? key, required this.userId, required this.userName, required this.userLastName, }) : super(key: key); @override _AddEventDialogState createState() => _AddEventDialogState(); } class _AddEventDialogState extends State { final _formKey = GlobalKey(); // Clé pour valider le formulaire String _eventName = ''; // Nom de l'événement DateTime _selectedDate = DateTime.now(); // Date de l'événement @override Widget build(BuildContext context) { print("Affichage du dialogue d'ajout d'événement."); return AlertDialog( title: const Text('Ajouter un événement'), content: Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: [ // Champ pour entrer le nom de l'événement TextFormField( decoration: const InputDecoration(labelText: 'Nom de l\'événement'), onSaved: (value) { _eventName = value ?? ''; print("Nom de l'événement saisi : $_eventName"); }, validator: (value) { if (value == null || value.isEmpty) { print("Erreur : le champ du nom de l'événement est vide."); return 'Veuillez entrer un nom d\'événement'; } return null; }, ), const SizedBox(height: 20), // Sélecteur de date pour l'événement ElevatedButton( onPressed: () async { final selectedDate = await _selectDate(context); if (selectedDate != null) { setState(() { _selectedDate = selectedDate; print("Date de l'événement sélectionnée : $_selectedDate"); }); } }, child: Text('Sélectionner la date : ${_selectedDate.toLocal()}'.split(' ')[0]), ), ], ), ), actions: [ // Bouton pour annuler l'ajout de l'événement TextButton( onPressed: () { print("L'utilisateur a annulé l'ajout de l'événement."); Navigator.of(context).pop(); }, child: const Text('Annuler'), ), // Bouton pour soumettre le formulaire et ajouter l'événement TextButton( onPressed: () { if (_formKey.currentState?.validate() == true) { _formKey.currentState?.save(); print("L'utilisateur a ajouté un événement : Nom = $_eventName, Date = $_selectedDate"); Navigator.of(context).pop({ 'eventName': _eventName, 'eventDate': _selectedDate, }); } }, child: const Text('Ajouter'), ), ], ); } /// Fonction pour afficher le sélecteur de date Future _selectDate(BuildContext context) async { final DateTime? picked = await showDatePicker( context: context, initialDate: _selectedDate, firstDate: DateTime(2000), lastDate: DateTime(2101), ); if (picked != null) { print("Date choisie dans le sélecteur : $picked"); } return picked; } }