80 lines
2.1 KiB
Dart
80 lines
2.1 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 '../../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<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);
|
|
}
|
|
|
|
/// Configure tous les modules de l'application
|
|
static Future<void> _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<void> dispose() async {
|
|
// Nettoyer les modules
|
|
OrganisationsDI.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>();
|
|
}
|