Versione OK Pour l'onglet événements.

This commit is contained in:
DahoudG
2025-09-15 20:15:34 +00:00
parent 8a619ee1bf
commit 12d514d866
73 changed files with 11508 additions and 674 deletions

View File

@@ -199,11 +199,11 @@ class _MembersListPageState extends State<MembersListPage>
children: [
// Titre principal quand l'AppBar est étendu
if (!innerBoxIsScrolled)
Padding(
padding: const EdgeInsets.only(top: 60),
const Padding(
padding: EdgeInsets.only(top: 60),
child: Text(
'Membres',
style: const TextStyle(
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontWeight: FontWeight.bold,
@@ -473,7 +473,7 @@ class _MembersListPageState extends State<MembersListPage>
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
const Icon(
Icons.people_outline,
size: 80,
color: AppTheme.textHint,

View File

@@ -172,13 +172,13 @@ class _MembreDetailsPageState extends State<MembreDetailsPage>
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.error, size: 64, color: AppTheme.errorColor),
SizedBox(height: 16),
const Icon(Icons.error, size: 64, color: AppTheme.errorColor),
const SizedBox(height: 16),
Text(state.message),
SizedBox(height: 16),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () => _membresBloc.add(LoadMembreById(widget.membreId)),
child: Text('Réessayer'),
child: const Text('Réessayer'),
),
],
),

View File

@@ -107,13 +107,13 @@ class _MembresDashboardPageState extends State<MembresDashboardPage> {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
const Icon(
Icons.error_outline,
size: 64,
color: AppTheme.errorColor,
),
const SizedBox(height: 16),
Text(
const Text(
'Erreur de chargement',
style: TextStyle(
fontSize: 18,
@@ -124,7 +124,7 @@ class _MembresDashboardPageState extends State<MembresDashboardPage> {
const SizedBox(height: 8),
Text(
state.message,
style: TextStyle(
style: const TextStyle(
fontSize: 14,
color: AppTheme.textSecondary,
),

View File

@@ -94,7 +94,7 @@ class _DashboardStatCardState extends State<DashboardStatCard>
child: AnimatedContainer(
duration: DesignSystem.animationFast,
curve: DesignSystem.animationCurve,
padding: EdgeInsets.all(DesignSystem.spacingLg),
padding: const EdgeInsets.all(DesignSystem.spacingLg),
decoration: BoxDecoration(
color: AppTheme.surfaceLight,
borderRadius: BorderRadius.circular(DesignSystem.radiusLg),
@@ -121,12 +121,12 @@ class _DashboardStatCardState extends State<DashboardStatCard>
if (widget.trend != null) _buildShimmer(60, 24, radius: 12),
],
),
SizedBox(height: DesignSystem.spacingMd),
const SizedBox(height: DesignSystem.spacingMd),
_buildShimmer(80, 32),
SizedBox(height: DesignSystem.spacingSm),
const SizedBox(height: DesignSystem.spacingSm),
_buildShimmer(120, 16),
if (widget.subtitle != null) ...[
SizedBox(height: DesignSystem.spacingXs),
const SizedBox(height: DesignSystem.spacingXs),
_buildShimmer(100, 14),
],
],
@@ -153,10 +153,10 @@ class _DashboardStatCardState extends State<DashboardStatCard>
_buildHeader(),
SizedBox(height: DesignSystem.goldenHeight(DesignSystem.spacingLg)),
_buildValue(),
SizedBox(height: DesignSystem.spacingSm),
const SizedBox(height: DesignSystem.spacingSm),
_buildTitle(),
if (widget.subtitle != null) ...[
SizedBox(height: DesignSystem.spacingXs),
const SizedBox(height: DesignSystem.spacingXs),
_buildSubtitle(),
],
],
@@ -202,7 +202,7 @@ class _DashboardStatCardState extends State<DashboardStatCard>
Widget _buildTrendBadge() {
return Container(
padding: EdgeInsets.symmetric(
padding: const EdgeInsets.symmetric(
horizontal: DesignSystem.spacingSm,
vertical: DesignSystem.spacingXs,
),
@@ -222,7 +222,7 @@ class _DashboardStatCardState extends State<DashboardStatCard>
color: _getTrendColor(),
size: 14,
),
SizedBox(width: DesignSystem.spacing2xs),
const SizedBox(width: DesignSystem.spacing2xs),
Text(
widget.trend!,
style: DesignSystem.labelSmall.copyWith(

View File

@@ -80,15 +80,15 @@ class MembreCotisationsSection extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.account_balance_wallet,
color: AppTheme.primaryColor,
size: 24,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Résumé des cotisations',
style: TextStyle(
fontSize: 18,
@@ -201,8 +201,8 @@ class MembreCotisationsSection extends StatelessWidget {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
child: Padding(
padding: const EdgeInsets.all(32),
child: const Padding(
padding: EdgeInsets.all(32),
child: Column(
children: [
Icon(
@@ -210,8 +210,8 @@ class MembreCotisationsSection extends StatelessWidget {
size: 48,
color: AppTheme.textHint,
),
const SizedBox(height: 16),
const Text(
SizedBox(height: 16),
Text(
'Aucune cotisation',
style: TextStyle(
fontSize: 16,
@@ -219,8 +219,8 @@ class MembreCotisationsSection extends StatelessWidget {
color: AppTheme.textPrimary,
),
),
const SizedBox(height: 8),
const Text(
SizedBox(height: 8),
Text(
'Ce membre n\'a pas encore de cotisations enregistrées.',
textAlign: TextAlign.center,
style: TextStyle(
@@ -237,15 +237,15 @@ class MembreCotisationsSection extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.list_alt,
color: AppTheme.primaryColor,
size: 20,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Historique des cotisations',
style: TextStyle(
fontSize: 16,

View File

@@ -56,15 +56,15 @@ class MembreStatsSection extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.analytics,
color: AppTheme.primaryColor,
size: 24,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Vue d\'ensemble',
style: TextStyle(
fontSize: 18,
@@ -226,15 +226,15 @@ class MembreStatsSection extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.pie_chart,
color: AppTheme.primaryColor,
size: 20,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Répartition des paiements',
style: TextStyle(
fontSize: 16,
@@ -280,15 +280,15 @@ class MembreStatsSection extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.bar_chart,
color: AppTheme.primaryColor,
size: 20,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Évolution des montants',
style: TextStyle(
fontSize: 16,
@@ -363,15 +363,15 @@ class MembreStatsSection extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.timeline,
color: AppTheme.primaryColor,
size: 20,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Chronologie',
style: TextStyle(
fontSize: 16,
@@ -474,7 +474,7 @@ class MembreStatsSection extends StatelessWidget {
padding: const EdgeInsets.all(40),
child: Column(
children: [
Icon(
const Icon(
Icons.bar_chart,
size: 48,
color: AppTheme.textHint,

View File

@@ -51,7 +51,7 @@ class _MembresExportDialogState extends State<MembresExportDialog> {
color: AppTheme.primaryColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(8),
),
child: Icon(
child: const Icon(
Icons.file_download,
color: AppTheme.primaryColor,
size: 24,
@@ -116,15 +116,15 @@ class _MembresExportDialogState extends State<MembresExportDialog> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
const Row(
children: [
Icon(
Icons.info_outline,
color: AppTheme.primaryColor,
size: 20,
),
const SizedBox(width: 8),
const Text(
SizedBox(width: 8),
Text(
'Données à exporter',
style: TextStyle(
fontSize: 16,

View File

@@ -43,7 +43,7 @@ class MembresViewControls extends StatelessWidget {
),
child: Text(
'$totalCount membre${totalCount > 1 ? 's' : ''}',
style: TextStyle(
style: const TextStyle(
fontSize: 12,
fontWeight: FontWeight.w500,
color: AppTheme.primaryColor,
@@ -72,7 +72,7 @@ class MembresViewControls extends StatelessWidget {
PopupMenuButton<String>(
initialValue: sortBy,
onSelected: onSortChanged,
icon: Icon(
icon: const Icon(
Icons.sort,
size: 20,
color: AppTheme.textSecondary,