Authentification stable - WIP
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
/// 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<DashboardPageStable> createState() => _DashboardPageStableState();
|
||||
}
|
||||
|
||||
class _DashboardPageStableState extends State<DashboardPageStable> {
|
||||
final GlobalKey<RefreshIndicatorState> _refreshKey = GlobalKey<RefreshIndicatorState>();
|
||||
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<void> _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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user