You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.6 KiB

2 years ago
  1. import 'package:itasmob/data/data_source/remote_data_source.dart';
  2. import 'package:itasmob/data/network/app_api.dart';
  3. import 'package:itasmob/data/network/dio_factory.dart';
  4. import 'package:itasmob/data/network/network_info.dart';
  5. import 'package:itasmob/data/repository/repository_impl.dart';
  6. import 'package:itasmob/domain/repository/repository.dart';
  7. import 'package:itasmob/domain/usecase/get_news_usecase.dart';
  8. import 'package:itasmob/presentation/home/home_vm.dart';
  9. import 'package:data_connection_checker_tv/data_connection_checker.dart';
  10. import 'package:get_it/get_it.dart';
  11. final instance = GetIt.instance;
  12. Future<void> initAppModule() async {
  13. // network info
  14. instance.registerLazySingleton<NetworkInfo>(
  15. () => NetworkInfoImpl(DataConnectionChecker()));
  16. // dio factory
  17. instance.registerLazySingleton<DioFactory>(() => DioFactory());
  18. // app service client
  19. final dio = await instance<DioFactory>().getDio();
  20. instance.registerLazySingleton<AppServiceClient>(() => AppServiceClient(dio));
  21. // remote data source
  22. instance.registerLazySingleton<RemoteDataSource>(
  23. () => RemoteDataSourceImplementer(instance()));
  24. // repository
  25. instance.registerLazySingleton<Repository>(
  26. () => RepositoryImpl(instance(), instance(),));
  27. }
  28. initHomeModule() {
  29. if (!GetIt.I.isRegistered<GetNewsUseCase>()) {
  30. instance.registerFactory<GetNewsUseCase>(() => GetNewsUseCase(instance()));
  31. instance.registerFactory<HomeViewModel>(() => HomeViewModel(instance()));
  32. }
  33. }
  34. resetModules() {
  35. instance.reset(dispose: false);
  36. initAppModule();
  37. initHomeModule();
  38. }