import 'package:get_it/get_it.dart'; import '../data/datasources/dashboard_remote_datasource.dart'; import '../data/repositories/dashboard_repository_impl.dart'; import '../domain/repositories/dashboard_repository.dart'; import '../domain/usecases/get_dashboard_data.dart'; import '../presentation/bloc/dashboard_bloc.dart'; import '../../../core/network/dio_client.dart'; import '../../../core/network/network_info.dart'; /// Configuration de l'injection de dépendances pour le module Dashboard class DashboardDI { static final GetIt _getIt = GetIt.instance; /// Enregistre toutes les dépendances du module Dashboard static void registerDependencies() { // Data Sources _getIt.registerLazySingleton( () => DashboardRemoteDataSourceImpl( dioClient: _getIt(), ), ); // Repositories _getIt.registerLazySingleton( () => DashboardRepositoryImpl( remoteDataSource: _getIt(), networkInfo: _getIt(), ), ); // Use Cases _getIt.registerLazySingleton(() => GetDashboardData(_getIt())); _getIt.registerLazySingleton(() => GetDashboardStats(_getIt())); _getIt.registerLazySingleton(() => GetRecentActivities(_getIt())); _getIt.registerLazySingleton(() => GetUpcomingEvents(_getIt())); // BLoC _getIt.registerFactory( () => DashboardBloc( getDashboardData: _getIt(), getDashboardStats: _getIt(), getRecentActivities: _getIt(), getUpcomingEvents: _getIt(), ), ); } /// Nettoie les dépendances du module Dashboard static void unregisterDependencies() { _getIt.unregister(); _getIt.unregister(); _getIt.unregister(); _getIt.unregister(); _getIt.unregister(); _getIt.unregister(); _getIt.unregister(); } }