/// Dashboard Page Stable - Redirecteur vers Dashboard Adaptatif /// Redirige automatiquement vers le nouveau système de dashboard adaptatif library dashboard_page_stable; import 'package:flutter/material.dart'; import 'adaptive_dashboard_page.dart'; /// Page Dashboard Stable - Maintenant un redirecteur /// /// Cette page redirige automatiquement vers le nouveau système /// de dashboard adaptatif basé sur les rôles utilisateurs. class DashboardPageStable extends StatefulWidget { const DashboardPageStable({super.key}); @override State createState() => _DashboardPageStableState(); } class _DashboardPageStableState extends State { final GlobalKey _refreshKey = GlobalKey(); bool _isLoading = false; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: ColorTokens.surface, appBar: AppBar( title: Text( 'UnionFlow Dashboard', style: TypographyTokens.headlineSmall.copyWith( fontWeight: FontWeight.w700, color: ColorTokens.onSurface, ), ), backgroundColor: ColorTokens.surface, elevation: 0, actions: [ IconButton( onPressed: () => _showNotifications(), icon: const Icon(Icons.notifications_outlined), tooltip: 'Notifications', ), IconButton( onPressed: () => _showSettings(), icon: const Icon(Icons.settings_outlined), tooltip: 'Paramètres', ), ], ), drawer: DashboardDrawer( onNavigate: _onNavigate, onLogout: _onLogout, ), body: RefreshIndicator( key: _refreshKey, onRefresh: _refreshData, child: SingleChildScrollView( padding: const EdgeInsets.all(SpacingTokens.md), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Message de bienvenue DashboardWelcomeSection( title: 'Bienvenue sur UnionFlow', subtitle: 'Votre plateforme de gestion d\'union familiale', ), const SizedBox(height: SpacingTokens.xl), // Statistiques DashboardStatsGrid( onStatTap: _onStatTap, ), const SizedBox(height: SpacingTokens.xl), // Actions rapides DashboardQuickActionsGrid( onActionTap: _onActionTap, ), const SizedBox(height: SpacingTokens.xl), // Activité récente DashboardRecentActivitySection( onActivityTap: _onActivityTap, ), const SizedBox(height: SpacingTokens.xl), // Insights DashboardInsightsSection( onMetricTap: _onMetricTap, ), ], ), ), ), ); } // === CALLBACKS POUR LES WIDGETS MODULAIRES === /// Callback pour les actions sur les statistiques void _onStatTap(String statType) { debugPrint('Statistique tapée: $statType'); // TODO: Implémenter la navigation vers les détails } /// Callback pour les actions rapides void _onActionTap(String actionType) { debugPrint('Action rapide: $actionType'); // TODO: Implémenter les actions spécifiques } /// Callback pour les activités récentes void _onActivityTap(String activityId) { debugPrint('Activité tapée: $activityId'); // TODO: Implémenter la navigation vers les détails } /// Callback pour les métriques d'insights void _onMetricTap(String metricType) { debugPrint('Métrique tapée: $metricType'); // TODO: Implémenter la navigation vers les rapports } /// Callback pour la navigation du drawer void _onNavigate(String route) { Navigator.of(context).pop(); // Fermer le drawer debugPrint('Navigation vers: $route'); // TODO: Implémenter la navigation } /// Callback pour la déconnexion void _onLogout() { Navigator.of(context).pop(); // Fermer le drawer debugPrint('Déconnexion demandée'); // TODO: Implémenter la déconnexion } // === MÉTHODES UTILITAIRES === /// Actualise les données du dashboard Future _refreshData() async { setState(() { _isLoading = true; }); // Simulation d'un appel API await Future.delayed(const Duration(seconds: 1)); setState(() { _isLoading = false; }); if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Données actualisées'), duration: Duration(seconds: 2), ), ); } } /// Affiche les notifications void _showNotifications() { debugPrint('Afficher les notifications'); // TODO: Implémenter l'affichage des notifications } /// Affiche les paramètres void _showSettings() { debugPrint('Afficher les paramètres'); // TODO: Implémenter l'affichage des paramètres } }