/// 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 '../../features/organisations/di/organisations_di.dart'; import '../../features/members/di/membres_di.dart'; import '../../features/events/di/evenements_di.dart'; import '../../features/cotisations/di/cotisations_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 initialize() async { // Configuration du client HTTP await _setupNetworking(); // Configuration des modules await _setupModules(); } /// Configure les services réseau static Future _setupNetworking() async { // Client Dio final dioClient = DioClient(); _getIt.registerSingleton(dioClient); _getIt.registerSingleton(dioClient.dio); } /// Configure tous les modules de l'application static Future _setupModules() async { // Module Organisations OrganisationsDI.registerDependencies(); // Module Membres MembresDI.register(); // Module Événements EvenementsDI.register(); // Module Cotisations registerCotisationsDependencies(_getIt); // TODO: Ajouter d'autres modules ici // SolidariteDI.registerDependencies(); // RapportsDI.registerDependencies(); } /// Nettoie toutes les dépendances static Future dispose() async { // Nettoyer les modules OrganisationsDI.unregisterDependencies(); MembresDI.unregister(); EvenementsDI.unregister(); // Nettoyer les services globaux if (_getIt.isRegistered()) { _getIt.unregister(); } if (_getIt.isRegistered()) { _getIt.unregister(); } // Reset complet await _getIt.reset(); } /// Obtient l'instance GetIt static GetIt get instance => _getIt; /// Obtient le client Dio static Dio get dio => _getIt(); /// Obtient le client Dio wrapper static DioClient get dioClient => _getIt(); }