101 lines
2.7 KiB
Dart
101 lines
2.7 KiB
Dart
/// Configuration globale de l'injection de dépendances
|
|
library app_di;
|
|
|
|
import 'package:dio/dio.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import '../network/dio_client.dart';
|
|
import '../network/network_info.dart';
|
|
import '../../features/organizations/di/organizations_di.dart';
|
|
import '../../features/members/di/membres_di.dart';
|
|
import '../../features/events/di/evenements_di.dart';
|
|
import '../../features/contributions/di/contributions_di.dart';
|
|
import '../../features/dashboard/di/dashboard_di.dart';
|
|
|
|
/// Gestionnaire global des dépendances
|
|
class AppDI {
|
|
static final GetIt _getIt = GetIt.instance;
|
|
|
|
/// Initialise toutes les dépendances de l'application
|
|
static Future<void> initialize() async {
|
|
// Configuration du client HTTP
|
|
await _setupNetworking();
|
|
|
|
// Configuration des modules
|
|
await _setupModules();
|
|
}
|
|
|
|
/// Configure les services réseau
|
|
static Future<void> _setupNetworking() async {
|
|
// Client Dio
|
|
final dioClient = DioClient();
|
|
_getIt.registerSingleton<DioClient>(dioClient);
|
|
_getIt.registerSingleton<Dio>(dioClient.dio);
|
|
|
|
// Network Info (pour l'instant, on simule toujours connecté)
|
|
_getIt.registerLazySingleton<NetworkInfo>(
|
|
() => _MockNetworkInfo(),
|
|
);
|
|
}
|
|
|
|
/// Configure tous les modules de l'application
|
|
static Future<void> _setupModules() async {
|
|
// Module Organizations
|
|
OrganizationsDI.registerDependencies();
|
|
|
|
// Module Membres
|
|
MembresDI.register();
|
|
|
|
// Module Événements
|
|
EvenementsDI.register();
|
|
|
|
// Module Contributions
|
|
registerCotisationsDependencies(_getIt);
|
|
|
|
// Module Dashboard
|
|
DashboardDI.registerDependencies();
|
|
|
|
// TODO: Ajouter d'autres modules ici
|
|
// SolidariteDI.registerDependencies();
|
|
// RapportsDI.registerDependencies();
|
|
}
|
|
|
|
/// Nettoie toutes les dépendances
|
|
static Future<void> dispose() async {
|
|
// Nettoyer les modules
|
|
OrganizationsDI.unregisterDependencies();
|
|
MembresDI.unregister();
|
|
EvenementsDI.unregister();
|
|
|
|
// Nettoyer les services globaux
|
|
if (_getIt.isRegistered<Dio>()) {
|
|
_getIt.unregister<Dio>();
|
|
}
|
|
if (_getIt.isRegistered<DioClient>()) {
|
|
_getIt.unregister<DioClient>();
|
|
}
|
|
|
|
// Reset complet
|
|
await _getIt.reset();
|
|
}
|
|
|
|
/// Obtient l'instance GetIt
|
|
static GetIt get instance => _getIt;
|
|
|
|
/// Obtient le client Dio
|
|
static Dio get dio => _getIt<Dio>();
|
|
|
|
/// Obtient le client Dio wrapper
|
|
static DioClient get dioClient => _getIt<DioClient>();
|
|
|
|
/// Nettoie toutes les dépendances
|
|
static Future<void> cleanup() async {
|
|
await _getIt.reset();
|
|
}
|
|
}
|
|
|
|
/// Mock de NetworkInfo pour les tests et développement
|
|
class _MockNetworkInfo implements NetworkInfo {
|
|
@override
|
|
Future<bool> get isConnected async => true;
|
|
}
|