refactoring
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/// Configuration principale de l'application UnionFlow
|
||||
///
|
||||
/// Contient la configuration globale de l'app avec thème, localisation et navigation
|
||||
///
|
||||
/// Thème dynamique (light/dark) via ThemeProvider + localisation + navigation
|
||||
library app;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -11,37 +11,49 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import '../shared/design_system/theme/app_theme_sophisticated.dart';
|
||||
import '../features/authentication/presentation/bloc/auth_bloc.dart';
|
||||
import '../core/l10n/locale_provider.dart';
|
||||
import '../core/theme/theme_provider.dart';
|
||||
import '../core/di/injection.dart';
|
||||
import 'router/app_router.dart';
|
||||
|
||||
/// Application principale avec système d'authentification Keycloak
|
||||
/// Application principale UnionFlow
|
||||
class UnionFlowApp extends StatelessWidget {
|
||||
final LocaleProvider localeProvider;
|
||||
final ThemeProvider themeProvider;
|
||||
|
||||
const UnionFlowApp({super.key, required this.localeProvider});
|
||||
/// Clé globale pour afficher des SnackBars sans BuildContext (ex: session expirée)
|
||||
static final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey =
|
||||
GlobalKey<ScaffoldMessengerState>();
|
||||
|
||||
const UnionFlowApp({
|
||||
super.key,
|
||||
required this.localeProvider,
|
||||
required this.themeProvider,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider.value(value: localeProvider),
|
||||
ChangeNotifierProvider.value(value: themeProvider),
|
||||
BlocProvider(
|
||||
create: (context) => getIt<AuthBloc>()..add(const AuthStatusChecked()),
|
||||
),
|
||||
],
|
||||
child: Consumer<LocaleProvider>(
|
||||
builder: (context, localeProvider, child) {
|
||||
child: Consumer2<LocaleProvider, ThemeProvider>(
|
||||
builder: (context, locale, theme, child) {
|
||||
return MaterialApp(
|
||||
title: 'UnionFlow',
|
||||
debugShowCheckedModeBanner: false,
|
||||
scaffoldMessengerKey: UnionFlowApp.scaffoldMessengerKey,
|
||||
|
||||
// Configuration du thème
|
||||
// Thème dynamique piloté par ThemeProvider
|
||||
theme: AppThemeSophisticated.lightTheme,
|
||||
darkTheme: AppThemeSophisticated.darkTheme,
|
||||
themeMode: ThemeMode.system,
|
||||
themeMode: theme.mode,
|
||||
|
||||
// Configuration de la localisation
|
||||
locale: localeProvider.locale,
|
||||
// Localisation
|
||||
locale: locale.locale,
|
||||
supportedLocales: LocaleProvider.supportedLocales,
|
||||
localizationsDelegates: const [
|
||||
AppLocalizations.delegate,
|
||||
@@ -50,13 +62,11 @@ class UnionFlowApp extends StatelessWidget {
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
|
||||
// Configuration des routes
|
||||
routes: AppRouter.routes,
|
||||
// Routes
|
||||
routes: AppRouter.routes,
|
||||
initialRoute: AppRouter.initialRoute,
|
||||
|
||||
// Page d'accueil par défaut
|
||||
initialRoute: AppRouter.initialRoute,
|
||||
|
||||
// Builder global pour gérer les erreurs
|
||||
// Fix textScaler global
|
||||
builder: (context, child) {
|
||||
return MediaQuery(
|
||||
data: MediaQuery.of(context).copyWith(
|
||||
|
||||
Reference in New Issue
Block a user