feat: Version 3.3.4 - Nouvelle architecture pages, optimisations widgets Flutter et API
- Mise à jour VERSION vers 3.3.4 - Optimisations et révisions architecture API (deploy-api.sh, scripts de migration) - Ajout documentation Stripe Tap to Pay complète - Migration vers polices Inter Variable pour Flutter - Optimisations build Android et nettoyage fichiers temporaires - Amélioration système de déploiement avec gestion backups - Ajout scripts CRON et migrations base de données 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
117
app/lib/app.dart
117
app/lib/app.dart
@@ -17,8 +17,13 @@ import 'package:geosector_app/core/services/chat_manager.dart';
|
||||
import 'package:geosector_app/presentation/auth/splash_page.dart';
|
||||
import 'package:geosector_app/presentation/auth/login_page.dart';
|
||||
import 'package:geosector_app/presentation/auth/register_page.dart';
|
||||
import 'package:geosector_app/presentation/admin/admin_dashboard_page.dart';
|
||||
import 'package:geosector_app/presentation/user/user_dashboard_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/history_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/home_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/map_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/messages_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/amicale_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/operations_page.dart';
|
||||
import 'package:geosector_app/presentation/pages/field_mode_page.dart';
|
||||
|
||||
// Instances globales des repositories (plus besoin d'injecter ApiService)
|
||||
final operationRepository = OperationRepository();
|
||||
@@ -203,21 +208,121 @@ class _GeosectorAppState extends State<GeosectorApp> with WidgetsBindingObserver
|
||||
return const RegisterPage();
|
||||
},
|
||||
),
|
||||
// NOUVELLE ARCHITECTURE: Pages user avec sous-routes comme admin
|
||||
GoRoute(
|
||||
path: '/user',
|
||||
name: 'user',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de UserDashboardPage');
|
||||
return const UserDashboardPage();
|
||||
debugPrint('GoRoute: Redirection vers /user/dashboard');
|
||||
// Rediriger directement vers dashboard au lieu d'utiliser UserDashboardPage
|
||||
return const HomePage();
|
||||
},
|
||||
routes: [
|
||||
// Sous-route pour le dashboard/home
|
||||
GoRoute(
|
||||
path: 'dashboard',
|
||||
name: 'user-dashboard',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de HomePage (unifiée)');
|
||||
return const HomePage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour l'historique
|
||||
GoRoute(
|
||||
path: 'history',
|
||||
name: 'user-history',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de HistoryPage (unifiée)');
|
||||
return const HistoryPage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour les messages
|
||||
GoRoute(
|
||||
path: 'messages',
|
||||
name: 'user-messages',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de MessagesPage (unifiée)');
|
||||
return const MessagesPage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour la carte
|
||||
GoRoute(
|
||||
path: 'map',
|
||||
name: 'user-map',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de MapPage (unifiée)');
|
||||
return const MapPage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour le mode terrain
|
||||
GoRoute(
|
||||
path: 'field-mode',
|
||||
name: 'user-field-mode',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de FieldModePage (unifiée)');
|
||||
return const FieldModePage();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
// NOUVELLE ARCHITECTURE: Pages admin autonomes
|
||||
GoRoute(
|
||||
path: '/admin',
|
||||
name: 'admin',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de AdminDashboardPage');
|
||||
return const AdminDashboardPage();
|
||||
debugPrint('GoRoute: Affichage de HomePage (unifiée)');
|
||||
return const HomePage();
|
||||
},
|
||||
routes: [
|
||||
// Sous-route pour l'historique avec membre optionnel
|
||||
GoRoute(
|
||||
path: 'history',
|
||||
name: 'admin-history',
|
||||
builder: (context, state) {
|
||||
final memberId = state.uri.queryParameters['memberId'];
|
||||
debugPrint('GoRoute: Affichage de HistoryPage (admin) avec memberId=$memberId');
|
||||
return HistoryPage(
|
||||
memberId: memberId != null ? int.tryParse(memberId) : null,
|
||||
);
|
||||
},
|
||||
),
|
||||
// Sous-route pour la carte
|
||||
GoRoute(
|
||||
path: 'map',
|
||||
name: 'admin-map',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de MapPage pour admin');
|
||||
return const MapPage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour les messages
|
||||
GoRoute(
|
||||
path: 'messages',
|
||||
name: 'admin-messages',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de MessagesPage (unifiée)');
|
||||
return const MessagesPage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour amicale & membres (role 2 uniquement)
|
||||
GoRoute(
|
||||
path: 'amicale',
|
||||
name: 'admin-amicale',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de AmicalePage (unifiée)');
|
||||
return const AmicalePage();
|
||||
},
|
||||
),
|
||||
// Sous-route pour opérations (role 2 uniquement)
|
||||
GoRoute(
|
||||
path: 'operations',
|
||||
name: 'admin-operations',
|
||||
builder: (context, state) {
|
||||
debugPrint('GoRoute: Affichage de OperationsPage (unifiée)');
|
||||
return const OperationsPage();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
redirect: (context, state) {
|
||||
|
||||
Reference in New Issue
Block a user