5.7 KiB
Documentation des Widgets Amicale
Cette documentation explique comment utiliser les widgets AmicaleRowWidget et AmicaleTableWidget pour afficher et gérer les données des amicales dans l'application.
AmicaleRowWidget
Le widget AmicaleRowWidget représente une ligne dans un tableau d'amicales. Il affiche les informations d'une amicale avec les colonnes suivantes :
- ID
- Nom
- Code Postal
- Région
- Actions (boutons selon les droits de l'utilisateur)
Propriétés
| Propriété | Type | Description |
|---|---|---|
amicale |
AmicaleModel |
Obligatoire. L'objet amicale à afficher. |
onEdit |
VoidCallback? |
Fonction appelée lorsque l'utilisateur clique sur le bouton d'édition. |
onDelete |
VoidCallback? |
Fonction appelée lorsque l'utilisateur clique sur le bouton de suppression. |
isAlternate |
bool |
Indique si la ligne doit avoir une couleur de fond alternée. Par défaut à false. |
Gestion des droits d'accès
Le widget gère automatiquement l'affichage des boutons d'action en fonction du rôle de l'utilisateur :
- Le bouton d'édition (crayon) est visible pour tous les utilisateurs avec un rôle > 1
- Le bouton de suppression (corbeille) est visible uniquement pour les utilisateurs avec un rôle > 2
Exemple d'utilisation
AmicaleRowWidget(
amicale: amicale,
isAlternate: index % 2 == 1, // Alterner les couleurs
onEdit: () {
// Code pour gérer l'édition
},
onDelete: () {
// Code pour gérer la suppression
},
)
AmicaleTableWidget
Le widget AmicaleTableWidget affiche un tableau complet d'amicales avec un en-tête et des lignes. Il utilise le widget AmicaleRowWidget pour afficher chaque ligne.
Propriétés
| Propriété | Type | Description |
|---|---|---|
amicales |
List<AmicaleModel> |
Obligatoire. La liste des amicales à afficher. |
onEdit |
Function(AmicaleModel)? |
Fonction appelée lorsque l'utilisateur clique sur le bouton d'édition d'une amicale. |
onDelete |
Function(AmicaleModel)? |
Fonction appelée lorsque l'utilisateur clique sur le bouton de suppression d'une amicale. |
isLoading |
bool |
Indique si les données sont en cours de chargement. Affiche un indicateur de chargement si true. Par défaut à false. |
emptyMessage |
String? |
Message à afficher lorsque la liste des amicales est vide. |
États du tableau
Le widget gère automatiquement différents états :
- Chargement : Affiche un indicateur de chargement circulaire lorsque
isLoadingesttrue. - Liste vide : Affiche un message lorsque la liste des amicales est vide.
- Affichage normal : Affiche la liste des amicales avec des lignes alternées.
Exemple d'utilisation
AmicaleTableWidget(
amicales: _amicales,
isLoading: _isLoading,
onEdit: (amicale) {
// Code pour gérer l'édition de l'amicale
},
onDelete: (amicale) {
// Code pour gérer la suppression de l'amicale
},
emptyMessage: 'Aucune amicale trouvée. Veuillez en créer une nouvelle.',
)
Intégration avec AmicaleRepository
Pour utiliser ces widgets avec le repository des amicales, vous devez :
- Récupérer les amicales depuis le repository :
final amicaleRepository = Provider.of<AmicaleRepository>(context, listen: false);
final amicales = amicaleRepository.getAllAmicales();
- Gérer les actions d'édition et de suppression :
void _handleEdit(AmicaleModel amicale) {
// Naviguer vers la page d'édition ou afficher une boîte de dialogue
}
Future<void> _handleDelete(AmicaleModel amicale) async {
// Afficher une confirmation puis supprimer
final amicaleRepository = Provider.of<AmicaleRepository>(context, listen: false);
await amicaleRepository.deleteAmicale(amicale.id);
// Recharger la liste
setState(() {
_amicales = amicaleRepository.getAllAmicales();
});
}
Exemple complet
Un exemple complet d'utilisation est disponible dans le fichier app/lib/presentation/widgets/examples/amicale_table_example.dart.
Personnalisation
Styles
Les widgets utilisent les styles du thème de l'application pour la cohérence visuelle. Vous pouvez personnaliser l'apparence en modifiant le thème ou en surchargeant les styles dans votre implémentation.
Colonnes et flexibilité
Les colonnes du tableau ont des valeurs de flex prédéfinies pour une mise en page optimale :
- ID : flex 1
- Nom : flex 4
- Code Postal : flex 2
- Région : flex 3
- Actions : flex 2
Vous pouvez ajuster ces valeurs en modifiant le code source si nécessaire.
Bonnes pratiques
- Gestion des erreurs : Ajoutez toujours une gestion des erreurs lors de l'interaction avec le repository.
- Confirmation des actions : Demandez toujours une confirmation avant de supprimer une amicale.
- Actualisation des données : Prévoyez un moyen de rafraîchir les données (bouton ou pull-to-refresh).
- Pagination : Pour les grandes listes, envisagez d'implémenter une pagination.