feat: Livraison version 3.0.6

- Amélioration de la gestion des entités et des utilisateurs
- Mise à jour des modèles Amicale et Client avec champs supplémentaires
- Ajout du service de logging et amélioration du chargement UI
- Refactoring des formulaires utilisateur et amicale
- Intégration de file_picker et image_picker pour la gestion des fichiers
- Amélioration de la gestion des membres et de leur suppression
- Optimisation des performances de l'API
- Mise à jour de la documentation technique

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-08 20:33:54 +02:00
parent 1018b86537
commit 0e98a94374
63 changed files with 104136 additions and 87983 deletions

View File

@@ -32,6 +32,8 @@ class MembreTableWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final screenWidth = MediaQuery.of(context).size.width;
final isMobile = screenWidth < 768;
return Container(
height: height,
@@ -61,21 +63,35 @@ class MembreTableWidget extends StatelessWidget {
),
child: Row(
children: [
// ID
Expanded(
flex: 1,
child: Text(
'ID',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
// ID - masqué en mobile
if (!isMobile)
Expanded(
flex: 1,
child: Text(
'ID',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
),
),
),
// Identifiant (username) - masqué en mobile
if (!isMobile)
Expanded(
flex: 2,
child: Text(
'Identifiant',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
),
),
),
),
// Prénom (firstName)
Expanded(
flex: 2,
flex: isMobile ? 2 : 2,
child: Text(
'Prénom',
style: theme.textTheme.titleSmall?.copyWith(
@@ -87,7 +103,7 @@ class MembreTableWidget extends StatelessWidget {
// Nom (name)
Expanded(
flex: 2,
flex: isMobile ? 2 : 2,
child: Text(
'Nom',
style: theme.textTheme.titleSmall?.copyWith(
@@ -97,29 +113,31 @@ class MembreTableWidget extends StatelessWidget {
),
),
// Email
Expanded(
flex: 3,
child: Text(
'Email',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
// Email - masqué en mobile
if (!isMobile)
Expanded(
flex: 3,
child: Text(
'Email',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
),
),
),
),
// Rôle (fkRole)
Expanded(
flex: 1,
child: Text(
'Rôle',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
// Rôle (fkRole) - masqué en mobile
if (!isMobile)
Expanded(
flex: 1,
child: Text(
'Rôle',
style: theme.textTheme.titleSmall?.copyWith(
fontWeight: FontWeight.bold,
color: theme.colorScheme.primary,
),
),
),
),
// Statut
Expanded(
@@ -136,7 +154,7 @@ class MembreTableWidget extends StatelessWidget {
// Actions (si onEdit, onDelete ou onResetPassword sont fournis)
if (onEdit != null || onDelete != null || onResetPassword != null)
Expanded(
flex: 2,
flex: isMobile ? 2 : 2,
child: Text(
'Actions',
style: theme.textTheme.titleSmall?.copyWith(
@@ -152,14 +170,14 @@ class MembreTableWidget extends StatelessWidget {
// Corps du tableau
Expanded(
child: _buildTableContent(context),
child: _buildTableContent(context, isMobile),
),
],
),
);
}
Widget _buildTableContent(BuildContext context) {
Widget _buildTableContent(BuildContext context, bool isMobile) {
// Afficher un indicateur de chargement si isLoading est true
if (isLoading) {
return const Center(child: CircularProgressIndicator());
@@ -193,6 +211,7 @@ class MembreTableWidget extends StatelessWidget {
onResetPassword: onResetPassword,
isAlternate: index % 2 == 1,
onTap: onEdit != null ? () => onEdit!(membre) : null,
isMobile: isMobile,
);
},
);