init function
Implementation
Future<void> init() async {
if (_diInitialized) return;
//Bloc
sl.registerFactory(
() => AuthBloc(
storeLoginUseCase: sl(),
loginUseCase: sl(),
getOnboardingUseCase: sl(),
getClientUseCase: sl(),
checkCodeUseCase: sl(),
forgetPasswordUseCase: sl(),
registerUseCase: sl(),
resendVerifyEmailUseCase: sl(),
resetPasswordUseCase: sl(),
verifyEmailUseCase: sl(),
socialiteAuthUseCase: sl(),
externalAuthUseCase: sl(),
logoutUseCase: sl(),
getPagesUseCase: sl(),
),
);
sl.registerFactory(
() => PrivilegesBloc(
getCartridgesUseCase: sl(),
getPartnerByIdUseCase: sl(),
getPartnerCategoryUseCase: sl(),
getPartnersUseCase: sl(),
searchPartnersUseCase: sl(),
subscribeUsesCase: sl(),
),
);
sl.registerFactory(
() => ProfileBloc(
getClientUseCase: sl(),
updateClientUseCase: sl(),
getPromotionPassUseCase: sl(),
getPromotionUseCase: sl(),
deleteAccountUseCase: sl(),
logoutUseCase: sl(),
subscribeUsesCase: sl(),
unsubscribeUsesCase: sl(),
getOrdersUseCase: sl(),
),
);
sl.registerFactory(
() => SettingBloc(
getPagesUseCase: sl(),
),
);
sl.registerFactory(
() => SubscriptionBloc(
scanPromotionUsesCase: sl(),
subscribeUsesCase: sl(),
unsubscribeUsesCase: sl(),
),
);
sl.registerFactory(
() => VouchersBloc(
getArticlesUseCase: sl(),
getPartnerCategoryUseCase: sl(),
getArticlesListUseCase: sl(),
buyOrderUseCase: sl(),
),
);
sl.registerFactory(
() => TicketOfficeBloc(
getTicketOfficeUseCase: sl(),
getPartnerCategoryUseCase: sl(),
getTicketOfficesIdUseCase: sl(),
getSubGenderOffersCase: sl(),
ticketOfficeBuyOrderUseCase: sl(),
),
);
//UseCase
sl.registerFactory(() => StoreLoginUseCase(repository: sl()));
sl.registerFactory(() => LoginUseCase(repository: sl()));
sl.registerFactory(() => GetOnboardingUseCase(repository: sl()));
sl.registerFactory(() => CheckCodeUseCase(repository: sl()));
sl.registerFactory(() => ForgetPasswordUseCase(repository: sl()));
sl.registerFactory(() => DeleteAccountUseCase(repository: sl()));
sl.registerFactory(() => LogoutUseCase(repository: sl()));
sl.registerFactory(() => RegisterUseCase(repository: sl()));
sl.registerFactory(() => ResendVerifyEmailUseCase(repository: sl()));
sl.registerFactory(() => ResetPasswordUseCase(repository: sl()));
sl.registerFactory(() => SocialiteAuthUseCase(repository: sl()));
sl.registerFactory(() => ExternalAuthUseCase(repository: sl()));
sl.registerFactory(() => VerifyEmailUseCase(repository: sl()));
sl.registerFactory(() => GetCartridgesUseCase(repository: sl()));
sl.registerFactory(() => GetPrivilegesByIdUseCase(repository: sl()));
sl.registerFactory(() => GetPrivilegesCategoryUseCase(repository: sl()));
sl.registerFactory(() => GetPrivilegesUseCase(repository: sl()));
sl.registerFactory(() => SearchPartnersUseCase(repository: sl()));
sl.registerFactory(() => GetClientUseCase(repository: sl()));
sl.registerFactory(() => UpdateClientUseCase(repository: sl()));
sl.registerFactory(() => GetPromotionPassUseCase(repository: sl()));
sl.registerFactory(() => GetPromotionUseCase(repository: sl()));
sl.registerFactory(() => ScanPromotionUsesCase(repository: sl()));
sl.registerFactory(() => SubscribeUsesCase(repository: sl()));
sl.registerFactory(() => UnsubscribeUsesCase(repository: sl()));
sl.registerFactory(() => GetPagesUseCase(repository: sl()));
sl.registerFactory(() => GetArticlesListUseCase(repository: sl()));
sl.registerFactory(() => VouchersBuyOrderUseCase(repository: sl()));
sl.registerFactory(() => GetOrdersUseCase(repository: sl()));
sl.registerFactory(() => GetArticlesUseCase(repository: sl()));
sl.registerFactory(() => GetTicketOfficeUseCase(repository: sl()));
sl.registerFactory(() => GetTicketOfficesIdUseCase(repository: sl()));
sl.registerFactory(() => GetSubGenderOffersCase(repository: sl()));
sl.registerFactory(() => TicketOfficeBuyOrderUseCase(repository: sl()));
// Repository
sl.registerFactory<AuthRepository>(
() => AuthRepositoryImpl(networkInfo: sl(), authRemoteDataSource: sl()));
sl.registerFactory<ProfileRepository>(() => ProfileRepositoryImpl(
networkInfo: sl(),
profileRemoteDataSource: sl(),
));
sl.registerFactory<PrivilegesRepository>(() => PrivilegesRepositoryImpl(
networkInfo: sl(), partnerRemoteDataSource: sl()));
sl.registerFactory<SettingRepository>(() => SettingRepositoryImpl(
networkInfo: sl(),
settingRemoteDataSource: sl(),
));
sl.registerFactory<SubscriptionRepository>(() => SubscriptionRepositoryImpl(
networkInfo: sl(),
subscriptionRemoteDataSource: sl(),
));
sl.registerFactory<VouchersRepository>(() => VouchersRepositoryImpl(
networkInfo: sl(),
vouchersRemoteDataSource: sl(),
));
sl.registerFactory<TicketOfficeRepository>(() => TicketOfficeRepositoryImpl(
networkInfo: sl(),
ticketOfficeRemoteDataSource: sl(),
));
// Api Client
sl.registerFactory(() => ApiClient());
sl.registerFactory(() => StoreApiClient());
// DataSources
sl.registerFactory<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImpl(prefUtils: sl(), apiClient: sl()));
sl.registerFactory<ProfileRemoteDataSource>(
() => ProfileRemoteDataSourceImpl(prefUtils: sl(), apiClient: sl()));
sl.registerFactory<PrivilegesRemoteDataSource>(
() => PrivilegesRemoteDataSourceImpl(apiClient: sl()));
sl.registerFactory<SettingRemoteDataSource>(
() => SettingRemoteDataSourceImpl(apiClient: sl()));
sl.registerFactory<SubscriptionRemoteDataSource>(
() => SubscriptionRemoteDataSourceImpl(apiClient: sl()));
sl.registerFactory<VouchersRemoteDataSource>(
() => VouchersRemoteDataSourceImpl(apiClient: sl()));
sl.registerFactory<TicketOfficeRemoteDataSource>(
() => TicketOfficeRemoteDataSourceImpl(apiClient: sl()));
//! Core
sl.registerFactory<NetworkInfo>(() => NetworkInfoImpl(sl()));
//! External
sl.registerFactory(() => http.Client());
sl.registerFactory(() => InternetConnectionChecker());
final sharedPreferences = await SharedPreferences.getInstance();
sl.registerFactory(() => sharedPreferences);
sl.registerFactory<PrefUtils>(() => PrefUtilsImpl(sharedPreferences: sl()));
_diInitialized = true;
}