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.
181 lines
8.5 KiB
181 lines
8.5 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/app/presentation/bloc/app_bloc.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/batch_download_usecase.dart';
|
|
import 'package:hadi_hoda_flutter/features/download/domain/usecases/cancel_download_usecase.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/get_last_downloaded_level.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/download/presentation/bloc/download_bloc.dart';
|
|
import 'package:hadi_hoda_flutter/features/guider/data/datasource/guider_datasource.dart';
|
|
import 'package:hadi_hoda_flutter/features/guider/data/repository_impl/guider_repository_impl.dart';
|
|
import 'package:hadi_hoda_flutter/features/guider/domain/repository/guider_repository.dart';
|
|
import 'package:hadi_hoda_flutter/features/guider/domain/usecases/get_first_level_usecase.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/data/datasource/language_datasource.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/data/repository_impl/language_repository_impl.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/domain/repository/language_repository.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/domain/usecases/get_languages_usecase.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/domain/usecases/get_selected_language_usecase.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/domain/usecases/save_selected_language_usecase.dart';
|
|
import 'package:hadi_hoda_flutter/features/language/presentation/bloc/language_bloc.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/node_entity.dart';
|
|
import 'package:hadi_hoda_flutter/features/level/domain/entity/prize_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.musicAudioVolume),
|
|
instanceName: MyConstants.mainAudioService,
|
|
);
|
|
locator.registerSingleton<AudioService>(
|
|
AudioService(volume: MyConstants.effectAudioVolume),
|
|
instanceName: MyConstants.effectAudioService,
|
|
);
|
|
locator.registerSingleton<AppBloc>(AppBloc());
|
|
|
|
/// Blocs
|
|
locator.registerFactory<LanguageBloc>(
|
|
() => LanguageBloc(locator(), locator(), locator()),
|
|
);
|
|
locator.registerFactory<DownloadBloc>(
|
|
() => DownloadBloc(locator(), locator(), locator(), locator(), locator()),
|
|
);
|
|
|
|
/// 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<SaveLevelsUseCase>(
|
|
() => SaveLevelsUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<BatchDownloadUseCase>(
|
|
() => BatchDownloadUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<LoadingStreamUseCase>(
|
|
() => LoadingStreamUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<CancelDownloadUseCase>(
|
|
() => CancelDownloadUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetLastDownloadedLevel>(
|
|
() => GetLastDownloadedLevel(locator()),
|
|
);
|
|
|
|
/// Guider Feature
|
|
locator.registerLazySingleton<IGuiderDatasource>(
|
|
() => const GuiderDatasourceImpl(),
|
|
);
|
|
locator.registerLazySingleton<IGuiderRepository>(
|
|
() => GuiderRepositoryImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetFirstLevelUseCase>(
|
|
() => GetFirstLevelUseCase(locator()),
|
|
);
|
|
|
|
/// Question Feature
|
|
locator.registerLazySingleton<IQuestionDatasource>(
|
|
() => const QuestionDatasourceImpl(),
|
|
);
|
|
locator.registerLazySingleton<IQuestionRepository>(
|
|
() => QuestionRepositoryImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetLevelUseCase>(
|
|
() => GetLevelUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetNextLevelUseCase>(
|
|
() => GetNextLevelUseCase(locator()),
|
|
);
|
|
|
|
/// Level Feature
|
|
locator.registerLazySingleton<ILevelDatasource>(
|
|
() => LocalLevelDatasourceImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<ILevelRepository>(
|
|
() => LevelRepositoryImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetLevelsUseCase>(
|
|
() => GetLevelsUseCase(locator()),
|
|
);
|
|
|
|
/// Language Feature
|
|
locator.registerLazySingleton<ILanguageDatasource>(
|
|
() => LanguageDatasourceImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<ILanguageRepository>(
|
|
() => LanguageRepositoryImpl(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetLanguagesUseCase>(
|
|
() => GetLanguagesUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<GetSelectedLanguageUseCase>(
|
|
() => GetSelectedLanguageUseCase(locator()),
|
|
);
|
|
locator.registerLazySingleton<SaveSelectedLanguageUseCase>(
|
|
() => SaveSelectedLanguageUseCase(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<PrizeEntity>(PrizeEntityAdapter())
|
|
..registerAdapter<LevelEntity>(LevelEntityAdapter())
|
|
..registerAdapter<NodeType>(NodeTypeAdapter())
|
|
..registerAdapter<NodeEntity>(NodeEntityAdapter())
|
|
..registerAdapter<TotalDataEntity>(TotalDataEntityAdapter());
|
|
|
|
await Hive.openBox<TotalDataEntity>(MyConstants.levelBox);
|
|
}
|