Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
service_locator.dart
Go to the documentation of this file.
1import 'package:connect/core/localization/language_cubit.dart';
2import 'package:connect/features/account/data/data_sources/remote_datasources/dicument_remote_datasource.dart';
3import 'package:connect/features/account/data/data_sources/remote_datasources/profile_remote_datasource.dart';
4import 'package:connect/features/account/data/repositories/document_repository_impl.dart';
5import 'package:connect/features/account/data/repositories/profile_repository_impl.dart';
6import 'package:connect/features/account/domain/repositories/document_repository.dart';
7import 'package:connect/features/account/domain/repositories/profile_repository.dart';
8import 'package:connect/features/account/domain/use_cases/load_documents_usecase.dart';
9import 'package:connect/features/account/domain/use_cases/load_profile_usecase.dart';
10import 'package:connect/features/account/screens/cubit/document_cubit/document_cubit.dart';
11import 'package:connect/features/account/screens/cubit/profile_cubit/load_profile_cubit_cubit.dart';
12import 'package:connect/features/authentication/domain/use_cases/chec_biometric_auth_availability_usecase.dart';
13import 'package:shared_preferences/shared_preferences.dart';
14
15import '../../features/elearning_v2/data/data_sources/elearning_v2_local_data_source.dart';
16import '../../features/elearning_v2/data/data_sources/elearning_v2_local_data_source_impl.dart';
17import '../../features/elearning_v2/data/repository_impl/elearning_v2_repository_impl.dart';
18import '../../features/elearning_v2/domain/repository/elearning_v2_repository.dart';
19import '../../features/elearning_v2/presentation/logic/cubit/elearning_v2_cubit.dart';
20import '/features/collections/presentation/logic/collection_requests_history_bloc/collection_requests_history_bloc.dart';
21import '/features/elearning/data/data_sources/elearning_remote_data_sources.dart';
22import '/features/elearning/data/repository_impl/elearning_repository_impl.dart';
23import '/features/elearning/domain/repository/elearning_repository.dart';
24import '/features/elearning/domain/usecases/load_videos_usecase.dart.dart';
25import '/features/elearning/presentation/logic/cubit/elearning_cubit.dart';
26import '/features/main_menu/data/data_sources/main_menu_remote_datesource.dart';
27import '/features/main_menu/data/repository_impl/mainmenu_repository_impl.dart';
28import '/features/main_menu/domain/repository/main_meenu_repository.dart';
29import '/features/main_menu/domain/use_cases/load_banner_usecase.dart';
30import '/features/main_menu/presentation/logic/cubit/banners_cubit.dart';
31import '/features/notifications/data/data_sources/remote_datasources/notification_remote_datasource.dart';
32import '/features/notifications/data/repository_impl/notifications_repository_impl.dart';
33import '/features/notifications/domain/repository/notifactions_repository.dart';
34import '/features/notifications/domain/usecases/load_notifications_use_case.dart';
35import '/features/notifications/presentation/logic/notifications_cubit/notifications_cubit.dart';
36import '/features/collections/domain/use_cases/update_collection_usecase.dart';
37import '/features/collections/presentation/logic/update_collection_cubit/update_collection_cubit.dart';
38import '/features/settings/data/data_sources/faq_remote_data_source.dart';
39import '/features/settings/data/repository_impl/faq_repository_impl.dart';
40import '/features/settings/domain/repository/faq_repository.dart';
41import '/features/settings/domain/use_cases/load_faq_usecase.dart';
42import '/features/settings/presentation/logic/faq_cubit/faq_cubit.dart';
43import '/features/settings/presentation/logic/theme_cubit/theme_cubit.dart';
44import 'package:flutter_riverpod/flutter_riverpod.dart';
45import 'package:get_it/get_it.dart';
46
47import '../../features/authentication/data/data_source/local_datasource/credentials_local_datasource.dart';
48import '../../features/authentication/data/data_source/local_datasource/session_local_datasource.dart';
49import '../../features/authentication/data/data_source/local_datasource/token_local_datasource.dart';
50import '../../features/authentication/data/data_source/remote_datasource/authentication_remote_datasource.dart';
51import '../../features/authentication/data/repository_impl/authentication_repository_impl.dart';
52import '../../features/authentication/domain/repository/authentication_repository.dart';
53import '../../features/authentication/domain/use_cases/load_credentials_usecase.dart';
54import '../../features/authentication/domain/use_cases/load_session_usecase.dart';
55import '../../features/authentication/domain/use_cases/signin_usecases.dart';
56import '../../features/authentication/domain/use_cases/signout_usecase.dart';
57import '../../features/authentication/presentation/logic/authentication_bloc/authentication_bloc.dart';
58import '../../features/dashboard/data/data_sources/remote_datasource/dashboard_remote_datasource.dart';
59import '../../features/dashboard/data/repository_impl/dashboard_repository_impl.dart';
60import '../../features/dashboard/domain/repository/dashboard_repository.dart';
61import '../../features/dashboard/domain/use_cases/load_dashboard_usecase.dart';
62import '../../features/dashboard/presentation/logic/dashboard_cubit/dashboard_cubit.dart';
63import '../../features/environmental_dashboard/data/data_source/remote_datasource/environmental_dashboard_remote_datasource.dart';
64import '../../features/environmental_dashboard/data/repository_impl/environmental_dashboard_repository_impl.dart';
65import '../../features/environmental_dashboard/domain/repository/environmental_dashboard_repository.dart';
66import '../../features/environmental_dashboard/domain/usecases/load_environmental_dashboard_usecase.dart';
67import '../../features/environmental_dashboard/presentation/logic/cubit/environmental_dashboar_cubit.dart';
68import '../../features/collections/data/data_sources/remote_datasource/collections_remote_datasource.dart';
69import '../../features/collections/data/repository_impl/collection_repository_impl.dart';
70import '../../features/collections/domain/repository/collection_repository.dart';
71import '../../features/collections/domain/use_cases/create_collection_request_usecase.dart';
72import '../../features/collections/domain/use_cases/load_completed_collections_requests_usecase.dart';
73import '../../features/collections/domain/use_cases/load_ongoing_collection_requests.dart';
74import '../../features/collections/domain/use_cases/load_collection_times_usecase.dart';
75import '../../features/collections/presentation/logic/create_collection_cubit/create_collection_cubit.dart';
76import '../../features/collections/presentation/logic/proposed_times_cubit/proposed_times_cubit.dart';
77import '../api/api_client.dart';
78
79final sl = GetIt.instance;
80
81Future<void> init() async {
82 // API DI
83 sl.registerLazySingleton<ApiClient>(() => ApiClient());
84
85 sl.registerLazySingleton<ProviderContainer>(() => ProviderContainer());
86
87 final sharedPreferences = await SharedPreferences.getInstance();
88 sl.registerLazySingleton<SharedPreferences>(() => sharedPreferences);
89
90 // AUTHENTICATION DI
91 sl.registerLazySingleton<AuthenticationRemoteDataSource>(
93 );
94 sl.registerLazySingleton<CredentialsLocalDataSource>(
95 () => CredentialsLocalDataSource(),
96 );
97 sl.registerLazySingleton<SessionLocalDataSource>(
98 () => SessionLocalDataSource(),
99 );
100 sl.registerLazySingleton<TokenLocalDataSource>(
101 () => TokenLocalDataSource(),
102 );
103 sl.registerLazySingleton<AuthenticationRepository>(
104 () => AuthenticationReposiptyImpl(),
105 );
106 sl.registerLazySingleton<SignInUseCase>(
107 () => SignInUseCase(),
108 );
109 sl.registerLazySingleton<SignOutUseCase>(
110 () => SignOutUseCase(),
111 );
112 sl.registerLazySingleton<LoadCredentialsUseCase>(
113 () => LoadCredentialsUseCase(),
114 );
115 sl.registerLazySingleton<LoadSessionUseCase>(
116 () => LoadSessionUseCase(),
117 );
118 sl.registerLazySingleton<CheckBiometricAuthAvailabilityUseCase>(
119 () => CheckBiometricAuthAvailabilityUseCase(),
120 );
121 sl.registerLazySingleton<AuthenticationBloc>(
122 () => AuthenticationBloc(),
123 );
124
125 // DASHBOARD DI
126 sl.registerLazySingleton<DashboardRemoteDataSource>(
128 );
129 sl.registerLazySingleton<DashboardRepository>(
130 () => DashboardRepositoryImpl(),
131 );
132 sl.registerLazySingleton<LoadDashboardUseCase>(
133 () => LoadDashboardUseCase(),
134 );
135 sl.registerLazySingleton<DashboardCubit>(
136 () => DashboardCubit(),
137 );
138
139 // ENVIRONMENTAL DASHBOARD DI
140 sl.registerLazySingleton<EnvironmentalDashboardRemoteDatasource>(
142 );
143 sl.registerLazySingleton<EnvironmentalDashboardRepository>(
144 () => EnvironmentalDashboardRepositoryImpl(),
145 );
146 sl.registerLazySingleton<LoadEnvironmentalDashboardUseCase>(
147 () => LoadEnvironmentalDashboardUseCase(),
148 );
149 sl.registerLazySingleton<EnvironmentalDashboarCubit>(
150 () => EnvironmentalDashboarCubit(),
151 );
152
153 // TRANSACTIONS HISTORY DI
154 sl.registerLazySingleton<CollectionsRemoteDataSource>(
155 () => CollectionsRemoteDataSource(client: sl()),
156 );
157 sl.registerLazySingleton<CollectionsRepository>(
158 () => CollectionsRepositoryImpl(
159 remoteDataSource: sl(),
160 ),
161 );
162 sl.registerLazySingleton<LoadCollectionTimesUseCase>(
163 () => LoadCollectionTimesUseCase(
164 repository: sl(),
165 ),
166 );
167 sl.registerLazySingleton<CreateCollectionRequestUseCase>(
168 () => CreateCollectionRequestUseCase(
169 repository: sl(),
170 ),
171 );
172 sl.registerLazySingleton<UpdateCollectionRequestUseCase>(
173 () => UpdateCollectionRequestUseCase(
174 repository: sl(),
175 ),
176 );
177 sl.registerLazySingleton<LoadOnGoingCollectionRequestsUseCase>(
178 () => LoadOnGoingCollectionRequestsUseCase(
179 repository: sl(),
180 ),
181 );
182 sl.registerLazySingleton<LoadCompletedCollectionRequestsUseCase>(
183 () => LoadCompletedCollectionRequestsUseCase(
184 repository: sl(),
185 ),
186 );
187 sl.registerLazySingleton<ProposedTimesCubit>(
188 () => ProposedTimesCubit(
189 loadCollectionTimesUseCase: sl(),
190 ),
191 );
192 sl.registerLazySingleton<CreateCollectionCubit>(
193 () => CreateCollectionCubit(
194 createCollectionRequestUseCase: sl(),
195 ),
196 );
197 sl.registerLazySingleton<UpdateCollectionCubit>(
198 () => UpdateCollectionCubit(
199 updateCollectionRequestUseCase: sl(),
200 ),
201 );
202 sl.registerLazySingleton<CollectionRequestsHistoryBloc>(
203 () => CollectionRequestsHistoryBloc(
204 loadCompletedCollectionsUseCase: sl(),
205 loadOnGoingCollectionUseCase: sl(),
206 ),
207 );
208
209 // NOTIFICATIONS DI
210 sl.registerLazySingleton<NotificationsRemoteDataSource>(
212 );
213 sl.registerLazySingleton<NotificationsRepository>(
214 () => NotificationsRepositoryImpl(),
215 );
216 sl.registerLazySingleton<LoadNotificationsUseCase>(
217 () => LoadNotificationsUseCase(),
218 );
219 sl.registerLazySingleton<NotificationsCubit>(
220 () => NotificationsCubit(),
221 );
222
223 // ELEARNING DI
224 sl.registerLazySingleton<ElearningRemoteDataSource>(
226 );
227 sl.registerLazySingleton<ElearningRepository>(
228 () => ElearningRepositoryImpl(),
229 );
230 sl.registerLazySingleton<LoadVideosUseCase>(
231 () => LoadVideosUseCase(),
232 );
233 sl.registerLazySingleton<ElearningCubit>(
234 () => ElearningCubit(),
235 );
236
237 //ELARNING V2
238 sl.registerLazySingleton<ElearningV2LocalDataSource>(
239 () => ElearningV2LocalDataSourceImpl(sharedPreferences: sl()),
240 );
241 sl.registerLazySingleton<ElearningV2Repository>(
242 () => ElearningV2RepositoryImpl(localDataSource: sl()),
243 );
244 sl.registerLazySingleton<ElearningV2Cubit>(
245 () => ElearningV2Cubit(sl()),
246 );
247
248 // MAINMENU DI
249 sl.registerLazySingleton<MainMwnuRemoteDataSource>(
251 );
252 sl.registerLazySingleton<MainMenuRepository>(
253 () => MainMenuRepositoryImpl(),
254 );
255 sl.registerLazySingleton<LoadBannersUseCase>(
256 () => LoadBannersUseCase(repository: sl()),
257 );
258 sl.registerLazySingleton<BannersCubit>(
259 () => BannersCubit(loadBannersUseCse: sl()),
260 );
261
262 // SETTINGS DI
263 sl.registerLazySingleton<FaqRemoteDataSource>(
264 () => FaqRemoteDataSource(),
265 );
266 sl.registerLazySingleton<Faqrepository>(
267 () => FaqrepositoryImpl(),
268 );
269 sl.registerLazySingleton<LoadFaqUseCase>(
270 () => LoadFaqUseCase(repository: sl()),
271 );
272 sl.registerLazySingleton<FaqCubit>(
273 () => FaqCubit(loadFaqUseCase: sl()),
274 );
275
276 // PROFILE DI
277 sl.registerLazySingleton<ProfileRemoteDataSource>(
278 () => ProfileRemoteDataSource(client: sl()),
279 );
280 sl.registerLazySingleton<DocumentRemoteDataSource>(
282 );
283
284 sl.registerLazySingleton<ProfileRepository>(
285 () => ProfileRepositoryImpl(),
286 );
287 sl.registerLazySingleton<DocumentRepository>(
288 () => DocumentRepositoryImpl(),
289 );
290
291 sl.registerLazySingleton<LoadProfileUseCase>(
292 () => LoadProfileUseCase(),
293 );
294 sl.registerLazySingleton<LoadDocumetsUseCase>(
295 () => LoadDocumetsUseCase(),
296 );
297
298 sl.registerLazySingleton<LoadProfileCubitCubit>(
299 () => LoadProfileCubitCubit(),
300 );
301 sl.registerLazySingleton<DocumentCubit>(
302 () => DocumentCubit(),
303 );
304
305 // Register ThemeModeBloc
306 sl.registerLazySingleton<ThemeModeBloc>(
307 () => ThemeModeBloc(),
308 );
309
310 // Register Language Cubit
311 sl.registerLazySingleton<LanguageCubit>(
312 () => LanguageCubit(),
313 );
314}
Future< void > init() async
final sl