import 'package:flutter/material.dart';

/// Un champ de saisie pour l'organisateur, utilisé dans un formulaire.
class OrganizerField extends StatelessWidget {
  // Fonction de rappel pour sauvegarder la valeur de l'organisateur.
  final Function(String?) onSaved;

  // Constructeur qui prend la fonction onSaved pour transmettre l'organisateur au formulaire.
  const OrganizerField({Key? key, required this.onSaved}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextFormField(
      decoration: InputDecoration(
        labelText: 'Organisateur', // Texte d'étiquette pour le champ de saisie.
        labelStyle: const TextStyle(
          color: Colors.blueGrey, // Couleur de l'étiquette en blueGrey.
        ),
        prefixIcon: const Icon(
          Icons.person, // Icône représentant un organisateur (utilisateur).
          color: Colors.blueGrey, // Couleur de l'icône.
        ),
        border: const OutlineInputBorder(
          borderRadius: BorderRadius.all(Radius.circular(12.0)), // Bordure arrondie.
          borderSide: BorderSide.none, // Pas de bordure par défaut.
        ),
        enabledBorder: OutlineInputBorder(
          borderRadius: const BorderRadius.all(Radius.circular(12.0)),
          borderSide: const BorderSide(
            color: Colors.blueGrey, // Bordure colorée en blueGrey.
            width: 1.5, // Largeur de la bordure.
          ),
        ),
        focusedBorder: OutlineInputBorder(
          borderRadius: const BorderRadius.all(Radius.circular(12.0)),
          borderSide: const BorderSide(
            color: Colors.blue, // Bordure bleue au focus.
            width: 2.0,
          ),
        ),
        filled: true, // Le champ de saisie est rempli de couleur de fond.
        fillColor: Colors.blueGrey.withOpacity(0.1), // Couleur de fond avec opacité.
      ),
      validator: (value) {
        // Validation pour vérifier que le champ n'est pas vide.
        if (value == null || value.isEmpty) {
          return 'Veuillez entrer un organisateur'; // Message d'erreur si vide.
        }
        return null;
      },
      onSaved: onSaved, // Fonction qui est appelée pour sauvegarder la valeur saisie.
    );
  }
}
