|
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();
|
|
}
|