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

import 'package:itasmob/data/data_source/remote_data_source.dart';
import 'package:itasmob/data/network/app_api.dart';
import 'package:itasmob/data/network/dio_factory.dart';
import 'package:itasmob/data/network/network_info.dart';
import 'package:itasmob/data/repository/repository_impl.dart';
import 'package:itasmob/domain/repository/repository.dart';
import 'package:itasmob/domain/usecase/get_news_usecase.dart';
import 'package:itasmob/presentation/home/home_vm.dart';
import 'package:data_connection_checker_tv/data_connection_checker.dart';
import 'package:get_it/get_it.dart';
final instance = GetIt.instance;
Future<void> initAppModule() async {
// network info
instance.registerLazySingleton<NetworkInfo>(
() => NetworkInfoImpl(DataConnectionChecker()));
// dio factory
instance.registerLazySingleton<DioFactory>(() => DioFactory());
// app service client
final dio = await instance<DioFactory>().getDio();
instance.registerLazySingleton<AppServiceClient>(() => AppServiceClient(dio));
// remote data source
instance.registerLazySingleton<RemoteDataSource>(
() => RemoteDataSourceImplementer(instance()));
// repository
instance.registerLazySingleton<Repository>(
() => RepositoryImpl(instance(), instance(),));
}
initHomeModule() {
if (!GetIt.I.isRegistered<GetNewsUseCase>()) {
instance.registerFactory<GetNewsUseCase>(() => GetNewsUseCase(instance()));
instance.registerFactory<HomeViewModel>(() => HomeViewModel(instance()));
}
}
resetModules() {
instance.reset(dispose: false);
initAppModule();
initHomeModule();
}