88 lines
2.5 KiB
Dart
88 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:intl/date_symbol_data_local.dart';
|
|
|
|
import 'core/auth/bloc/temp_auth_bloc.dart';
|
|
import 'core/auth/bloc/auth_event.dart';
|
|
import 'core/auth/services/temp_auth_service.dart';
|
|
import 'core/di/injection.dart';
|
|
import 'shared/theme/app_theme.dart';
|
|
import 'app.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// Initialisation des données de localisation
|
|
await initializeDateFormatting('fr_FR', null);
|
|
|
|
// Configuration de l'injection de dépendances
|
|
await configureDependencies();
|
|
|
|
// Configuration du système
|
|
await _configureApp();
|
|
|
|
// Lancement de l'application
|
|
runApp(const UnionFlowApp());
|
|
}
|
|
|
|
/// Configure les paramètres globaux de l'application
|
|
Future<void> _configureApp() async {
|
|
// Configuration de l'orientation
|
|
await SystemChrome.setPreferredOrientations([
|
|
DeviceOrientation.portraitUp,
|
|
]);
|
|
|
|
// Configuration de la barre de statut
|
|
SystemChrome.setSystemUIOverlayStyle(
|
|
const SystemUiOverlayStyle(
|
|
statusBarColor: Colors.transparent,
|
|
statusBarIconBrightness: Brightness.dark,
|
|
statusBarBrightness: Brightness.light,
|
|
systemNavigationBarColor: Colors.white,
|
|
systemNavigationBarIconBrightness: Brightness.dark,
|
|
),
|
|
);
|
|
}
|
|
|
|
/// Application principale
|
|
class UnionFlowApp extends StatelessWidget {
|
|
const UnionFlowApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return BlocProvider<TempAuthBloc>(
|
|
create: (context) {
|
|
final authService = TempAuthService();
|
|
final authBloc = TempAuthBloc(authService);
|
|
authBloc.add(const AuthInitializeRequested());
|
|
return authBloc;
|
|
},
|
|
child: MaterialApp(
|
|
title: 'UnionFlow',
|
|
debugShowCheckedModeBanner: false,
|
|
|
|
// Configuration du thème
|
|
theme: AppTheme.lightTheme,
|
|
darkTheme: AppTheme.darkTheme,
|
|
themeMode: ThemeMode.system,
|
|
|
|
// Configuration de la localisation
|
|
locale: const Locale('fr', 'FR'),
|
|
|
|
// Application principale
|
|
home: const AppWrapper(),
|
|
|
|
// Builder global pour gérer les erreurs
|
|
builder: (context, child) {
|
|
return MediaQuery(
|
|
data: MediaQuery.of(context).copyWith(
|
|
textScaler: const TextScaler.linear(1.0),
|
|
),
|
|
child: child ?? const SizedBox(),
|
|
);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
} |