perf: optimization des rebuilds (ValueNotifier pour calendrier/container_form, Selector pour pages de gestion et mon compte)

This commit is contained in:
ElPoyo
2026-05-26 13:48:50 +02:00
parent 6ee63ed29c
commit 93c102012b
6 changed files with 101 additions and 92 deletions
@@ -75,14 +75,15 @@ class _MaintenanceManagementPageState extends State<MaintenanceManagementPage> {
title: 'Gestion des maintenances',
),
drawer: const MainDrawer(currentPage: '/maintenance_management'),
body: Consumer<MaintenanceProvider>(
builder: (context, maintenanceProvider, _) {
if (maintenanceProvider.isLoading) {
body: Selector<MaintenanceProvider, ({bool isLoading, List<MaintenanceModel> maintenances})>(
selector: (context, provider) => (isLoading: provider.isLoading, maintenances: provider.maintenances),
builder: (context, data, _) {
if (data.isLoading) {
return const Center(child: CircularProgressIndicator());
}
final filteredMaintenances = _getFilteredMaintenances(
maintenanceProvider.maintenances,
data.maintenances,
);
return Column(
@@ -91,7 +92,7 @@ class _MaintenanceManagementPageState extends State<MaintenanceManagementPage> {
_buildFilterChips(),
// Statistiques
_buildStatsCards(maintenanceProvider),
_buildStatsCards(data.maintenances),
// Liste des maintenances
Expanded(
@@ -148,10 +149,10 @@ class _MaintenanceManagementPageState extends State<MaintenanceManagementPage> {
);
}
Widget _buildStatsCards(MaintenanceProvider provider) {
final upcoming = provider.maintenances.where((m) => !m.isCompleted && !m.isOverdue).length;
final overdue = provider.maintenances.where((m) => m.isOverdue).length;
final completed = provider.maintenances.where((m) => m.isCompleted).length;
Widget _buildStatsCards(List<MaintenanceModel> maintenances) {
final upcoming = maintenances.where((m) => !m.isCompleted && !m.isOverdue).length;
final overdue = maintenances.where((m) => m.isOverdue).length;
final completed = maintenances.where((m) => m.isCompleted).length;
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),