import 'dart:io'; import "package:get_it/get_it.dart"; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dio/dio.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:moor/moor.dart'; import 'package:sebn_inventory_app/application/auth/auth_bloc.dart'; import 'package:sebn_inventory_app/application/auth/sign_in_form/sign_in_form_bloc.dart'; import 'package:sebn_inventory_app/application/main/bloc/main_bloc.dart'; import 'package:sebn_inventory_app/domain/auth/i_auth_facade.dart'; import 'package:sebn_inventory_app/domain/main/i_inventory_facade.dart'; import 'package:sebn_inventory_app/domain/update/i_update_facade.dart'; import 'package:sebn_inventory_app/infrastructure/core/api_routes.dart'; import 'application/history/bloc/history_bloc.dart'; import 'application/locale/bloc/locale_bloc.dart'; import 'application/main/item_edit/bloc/item_edit_bloc.dart'; import 'application/update/update_bloc.dart'; import 'infrastructure/auth/django_auth_facade.dart'; import 'infrastructure/inventory/django_inventory_facade.dart'; import 'infrastructure/repository/datasources/local_datasource.dart'; import 'infrastructure/repository/repository.dart'; import 'infrastructure/update/django_update_facade.dart'; final GetIt getIt = GetIt.instance; Future<void> init({required QueryExecutor e, required File file}) async { // Bloc getIt.registerLazySingleton( () => AuthBloc( authFacade: getIt(), secureStorage: getIt(), repository: getIt(), dbFile: file, ), ); getIt.registerFactory( () => LocaleBloc( repository: getIt(), ), ); getIt.registerFactory( () => SignInFormBloc( authFacade: getIt(), secureStorage: getIt(), repository: getIt(), ), ); getIt.registerLazySingleton( () => MainBloc( authBloc: getIt(), repository: getIt(), authFacade: getIt(), inventoryFacade: getIt(), ), ); getIt.registerFactory( () => ItemEditBloc( authBloc: getIt(), mainBloc: getIt(), inventoryFacade: getIt(), ), ); getIt.registerFactory( () => HistoryBloc( authBloc: getIt(), repository: getIt(), inventoryFacade: getIt(), ), ); getIt.registerFactory(() => UpdateBloc(updateFacade: getIt())); // Repository getIt.registerLazySingleton<AppRepository>(() => AppRepository( localDataSource: getIt(), )); // Data sources getIt.registerLazySingleton<LocalDataSource>( () => LocalDatasourceImpl(e: e), ); getIt.registerLazySingleton<IAuthFacade>( () => DjangoAuthFacade(djangoAuth: getIt()), ); getIt.registerLazySingleton<IInventoryFacade>( () => DjangoInventoryFacade(djangoInventory: getIt())); getIt.registerLazySingleton<IUpdateFacade>(() => DjangoUpdateFacade(djangoUpdate: getIt())); //! Core getIt.registerLazySingleton(() => DjangoAuth(httpClient: getIt(), api: getIt())); getIt.registerLazySingleton(() => DjangoUpdate(httpClient: getIt(), api: getIt())); getIt.registerLazySingleton(() => DjangoInventory(httpClient: getIt(), api: getIt())); getIt.registerLazySingleton(() => const Api()); //! External getIt.registerLazySingleton(() => Dio()); getIt.registerLazySingleton(() => Connectivity()); getIt.registerLazySingleton(() => const FlutterSecureStorage()); }