import 'package:get_it/get_it.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; // Core import 'core/network/dio_client.dart'; // Data sources import 'data/data_sources/remote/auth_remote_data_source.dart'; import 'data/data_sources/remote/server_remote_data_source.dart'; import 'data/data_sources/remote/action_mapping_remote_data_source.dart'; import 'data/data_sources/local/secure_storage_manager.dart'; import 'data/data_sources/local/server_local_data_source.dart'; import 'data/data_sources/local/action_mapping_local_data_source.dart'; // Services import 'data/services/sync_service.dart'; // Repositories import 'data/repositories/auth_repository_impl.dart'; import 'data/repositories/server_repository_impl.dart'; import 'data/repositories/action_mapping_repository_impl.dart'; import 'domain/repositories/auth_repository.dart'; import 'domain/repositories/server_repository.dart'; import 'domain/repositories/action_mapping_repository.dart'; // Use cases import 'domain/use_cases/auth/login.dart'; import 'domain/use_cases/servers/get_servers.dart'; // BLoCs import 'presentation/blocs/auth/auth_bloc.dart'; import 'presentation/blocs/server/server_bloc.dart'; import 'presentation/blocs/action_mapping/action_mapping_bloc.dart'; final sl = GetIt.instance; Future init() async { // BLoCs sl.registerFactory( () => AuthBloc( loginUseCase: sl(), authRepository: sl(), ), ); sl.registerFactory( () => ServerBloc( serverRepository: sl(), ), ); sl.registerFactory( () => ActionMappingBloc( actionMappingRepository: sl(), ), ); // Use cases sl.registerLazySingleton(() => Login(sl())); sl.registerLazySingleton(() => GetServers(sl())); // Repositories sl.registerLazySingleton( () => AuthRepositoryImpl( remoteDataSource: sl(), storageManager: sl(), ), ); sl.registerLazySingleton( () => ServerRepositoryImpl( localDataSource: sl(), remoteDataSource: sl(), syncService: sl(), ), ); sl.registerLazySingleton( () => ActionMappingRepositoryImpl( localDataSource: sl(), remoteDataSource: sl(), syncService: sl(), ), ); // Services sl.registerLazySingleton( () => SyncServiceImpl( localDataSource: sl(), remoteDataSource: sl(), actionMappingLocalDataSource: sl(), actionMappingRemoteDataSource: sl(), ), ); // Data sources sl.registerLazySingleton( () => AuthRemoteDataSourceImpl(dio: sl().dio), ); sl.registerLazySingleton( () => ServerRemoteDataSourceImpl(dio: sl().dio), ); sl.registerLazySingleton( () => ServerLocalDataSourceImpl(), ); sl.registerLazySingleton( () => ActionMappingRemoteDataSourceImpl(dio: sl().dio), ); sl.registerLazySingleton( () => ActionMappingLocalDataSourceImpl(), ); sl.registerLazySingleton( () => SecureStorageManager(storage: sl()), ); // Core sl.registerLazySingleton(() => DioClient(sl())); // External sl.registerLazySingleton(() => const FlutterSecureStorage()); }