feat: Début des évolutions interfaces mobiles v3.2.4

- Préparation de la nouvelle branche pour les évolutions
- Mise à jour de la version vers 3.2.4
- Intégration des modifications en cours

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-04 16:49:29 +02:00
parent 2187dccfeb
commit 2786252307
86 changed files with 3434 additions and 180898 deletions

View File

@@ -2,6 +2,8 @@ import 'package:geosector_app/app.dart'; // Pour accéder aux instances globales
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'dart:math' as math;
import 'package:hive_flutter/hive_flutter.dart';
import 'package:geosector_app/core/data/models/sector_model.dart';
import 'package:geosector_app/presentation/widgets/sector_distribution_card.dart';
import 'package:geosector_app/presentation/widgets/charts/charts.dart';
import 'package:geosector_app/core/constants/app_keys.dart';
@@ -197,7 +199,7 @@ class _AdminDashboardHomePageState extends State<AdminDashboardHomePage> {
final currentOperation = userRepository.getCurrentOperation();
// Titre dynamique avec l'ID et le nom de l'opération
final String title = currentOperation != null ? 'Synthèse de l\'opération #${currentOperation.id} ${currentOperation.name}' : 'Synthèse de l\'opération';
final String title = currentOperation != null ? 'Opération #${currentOperation.id} ${currentOperation.name}' : 'Opération';
return Stack(children: [
// Fond dégradé avec petits points blancs
@@ -264,10 +266,16 @@ class _AdminDashboardHomePageState extends State<AdminDashboardHomePage> {
const SizedBox(height: AppTheme.spacingL),
// LIGNE 2 : Carte de répartition par secteur (pleine largeur)
SectorDistributionCard(
key: ValueKey('sector_distribution_${isFirstLoad ? 'initial' : 'refreshed'}_$isLoading'),
title: 'Répartition sur les 31 secteurs',
height: 500, // Hauteur maximale pour afficher tous les secteurs
ValueListenableBuilder<Box<SectorModel>>(
valueListenable: Hive.box<SectorModel>(AppKeys.sectorsBoxName).listenable(),
builder: (context, Box<SectorModel> box, child) {
final sectorCount = box.values.length;
return SectorDistributionCard(
key: ValueKey('sector_distribution_${isFirstLoad ? 'initial' : 'refreshed'}_$isLoading'),
title: '$sectorCount secteurs',
height: 500, // Hauteur maximale pour afficher tous les secteurs
);
},
),
const SizedBox(height: AppTheme.spacingL),
@@ -345,7 +353,7 @@ class _AdminDashboardHomePageState extends State<AdminDashboardHomePage> {
// Construit la carte de répartition par type de passage avec liste
Widget _buildPassageTypeCard(BuildContext context) {
return PassageSummaryCard(
title: 'Répartition par type de passage',
title: 'Passages',
titleColor: AppTheme.primaryColor,
titleIcon: Icons.route,
height: 300,
@@ -365,7 +373,7 @@ class _AdminDashboardHomePageState extends State<AdminDashboardHomePage> {
// Construit la carte de répartition par mode de paiement
Widget _buildPaymentTypeCard(BuildContext context) {
return PaymentSummaryCard(
title: 'Répartition par mode de paiement',
title: 'Règlements',
titleColor: AppTheme.buttonSuccessColor,
titleIcon: Icons.euro,
height: 300,