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.
		
		
		
		
		
			
		
			
				
					
					
						
							88 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							88 lines
						
					
					
						
							5.2 KiB
						
					
					
				
								import 'dart:io';
							 | 
						|
								
							 | 
						|
								import 'package:get_it/get_it.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/constants/my_constants.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/network/http_request.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/network/http_request_impl.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/services/audio_service.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/data/datasource/download_datasource.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/data/repository_impl/download_repository_impl.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/domain/repository/download_repository.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/domain/usecases/get_audios_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/domain/usecases/get_images_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/domain/usecases/loading_stream_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/download/domain/usecases/save_levels_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/data/datasource/level_datasource.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/data/repository_impl/level_repository_impl.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/entity/level_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/entity/total_data_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/repository/level_repository.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/usecases/get_levels_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/data/datasource/question_datasource.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/data/repository_impl/question_repository_impl.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/entity/answer_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/entity/file_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/entity/hadith_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/entity/question_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/repository/question_repository.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/usecases/get_level_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/question/domain/usecases/get_next_level_usecase.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/sample/data/datasource/sample_datasource.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/sample/data/repository_impl/sample_repository_impl.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/sample/domain/repository/sample_repository.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/sample/domain/usecases/get_sample_usecase.dart';
							 | 
						|
								import 'package:hive/hive.dart';
							 | 
						|
								import 'package:path_provider/path_provider.dart';
							 | 
						|
								
							 | 
						|
								final GetIt locator = GetIt.I;
							 | 
						|
								
							 | 
						|
								void initBindings() {
							 | 
						|
								  /// Classes
							 | 
						|
								  locator.registerSingleton<IHttpRequest>(HttpRequestImpl());
							 | 
						|
								  locator.registerSingleton<AudioService>(
							 | 
						|
								    AudioService(volume: MyConstants.mainAudioVolume),
							 | 
						|
								    instanceName: MyConstants.mainAudioService,
							 | 
						|
								  );
							 | 
						|
								  locator.registerSingleton<AudioService>(
							 | 
						|
								    AudioService(),
							 | 
						|
								    instanceName: MyConstants.effectAudioService,
							 | 
						|
								  );
							 | 
						|
								
							 | 
						|
								  /// Sample Feature
							 | 
						|
								  locator.registerLazySingleton<ISampleDatasource>(() => SampleDatasourceImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<ISampleRepository>(() => SampleRepositoryImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetSampleUseCase>(() => GetSampleUseCase(locator()));
							 | 
						|
								
							 | 
						|
								  /// Download Feature
							 | 
						|
								  locator.registerLazySingleton<IDownloadDatasource>(() => DownloadDatasourceImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<IDownloadRepository>(() => DownloadRepositoryImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetImagesUseCase>(() => GetImagesUseCase(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetAudiosUseCase>(() => GetAudiosUseCase(locator()));
							 | 
						|
								  locator.registerLazySingleton<SaveLevelsUseCase>(() => SaveLevelsUseCase(locator()));
							 | 
						|
								  locator.registerLazySingleton<LoadingStreamUseCase>(() => LoadingStreamUseCase(locator()));
							 | 
						|
								
							 | 
						|
								  /// Question Feature
							 | 
						|
								  locator.registerLazySingleton<IQuestionDatasource>(() => QuestionDatasourceImpl());
							 | 
						|
								  locator.registerLazySingleton<IQuestionRepository>(() => QuestionRepositoryImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetLevelUseCase>(() => GetLevelUseCase(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetNextLevelUseCase>(() => GetNextLevelUseCase(locator()));
							 | 
						|
								
							 | 
						|
								  /// Level Feature
							 | 
						|
								  locator.registerLazySingleton<ILevelDatasource>(() => LocalLevelDatasourceImpl());
							 | 
						|
								  locator.registerLazySingleton<ILevelRepository>(() => LevelRepositoryImpl(locator()));
							 | 
						|
								  locator.registerLazySingleton<GetLevelsUseCase>(() => GetLevelsUseCase(locator()));
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								Future<void> initDataBase() async {
							 | 
						|
								  final Directory dir = await getApplicationDocumentsDirectory();
							 | 
						|
								  Hive
							 | 
						|
								    ..init(dir.path)
							 | 
						|
								    ..registerAdapter<FileEntity>(FileEntityAdapter())
							 | 
						|
								    ..registerAdapter<AnswerEntity>(AnswerEntityAdapter())
							 | 
						|
								    ..registerAdapter<QuestionEntity>(QuestionEntityAdapter())
							 | 
						|
								    ..registerAdapter<HadithEntity>(HadithEntityAdapter())
							 | 
						|
								    ..registerAdapter<LevelEntity>(LevelEntityAdapter())
							 | 
						|
								    ..registerAdapter<TotalDataEntity>(TotalDataEntityAdapter());
							 | 
						|
								
							 | 
						|
								  await Hive.openBox<TotalDataEntity>(MyConstants.levelBox);
							 | 
						|
								}
							 |