diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 50bc02b..7cc45f6 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -12,7 +12,7 @@ plugins { android { namespace = "com.example.hadi_hoda_flutter" - compileSdk = flutter.compileSdkVersion + compileSdk = 36 ndkVersion = flutter.ndkVersion compileOptions { @@ -29,8 +29,8 @@ android { applicationId = "com.example.hadi_hoda_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion - targetSdk = flutter.targetSdkVersion + minSdk = 24 + targetSdk = 36 versionCode = flutter.versionCode versionName = flutter.versionName } diff --git a/lib/features/home/presentation/bloc/home_bloc.dart b/lib/features/home/presentation/bloc/home_bloc.dart index 3389b8b..05cd7ff 100644 --- a/lib/features/home/presentation/bloc/home_bloc.dart +++ b/lib/features/home/presentation/bloc/home_bloc.dart @@ -1,13 +1,17 @@ import 'dart:async'; +import 'dart:io'; import 'package:bloc/bloc.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; import 'package:go_router/go_router.dart'; import 'package:hadi_hoda_flutter/common_ui/resources/my_audios.dart'; import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/routers/my_routes.dart'; import 'package:hadi_hoda_flutter/core/services/audio_service.dart'; import 'package:hadi_hoda_flutter/core/utils/local_storage.dart'; +import 'package:hadi_hoda_flutter/core/utils/my_context.dart'; +import 'package:hadi_hoda_flutter/core/utils/storage_path.dart'; import 'package:hadi_hoda_flutter/core/widgets/dialog/about_us_dialog.dart'; import 'package:hadi_hoda_flutter/features/home/presentation/bloc/home_event.dart'; import 'package:hadi_hoda_flutter/features/home/presentation/bloc/home_state.dart'; @@ -16,12 +20,12 @@ import 'package:hive/hive.dart'; class HomeBloc extends Bloc { /// ------------constructor------------ - HomeBloc( - this._mainAudioService, - this._effectAudioService, - ) : super(const HomeState()) { + HomeBloc(this._mainAudioService, this._effectAudioService) + : super(const HomeState()) { volumeStream = _mainAudioService.volumeStream(); playMusic(); + preCacheQuestionGifs(); + preCacheAnswerGifs(); on(_getHomeEvent); } @@ -35,8 +39,10 @@ class HomeBloc extends Bloc { final AudioService _effectAudioService; /// ------------Functions------------ - void goToLevelPage(BuildContext context){ - final String? selectedLanguage = LocalStorage.readData(key: MyConstants.selectLanguage); + void goToLevelPage(BuildContext context) { + final String? selectedLanguage = LocalStorage.readData( + key: MyConstants.selectLanguage, + ); final Box dataBox = Hive.box(MyConstants.levelBox); final TotalDataEntity findData = dataBox.values.singleWhere( (e) => e.code == selectedLanguage, @@ -49,11 +55,11 @@ class HomeBloc extends Bloc { } } - void goToLanguagePage(BuildContext context){ + void goToLanguagePage(BuildContext context) { context.pushNamed(Routes.languagePage); } - void showAboutUs(BuildContext context){ + void showAboutUs(BuildContext context) { showAboutUsDialog(context: context); } @@ -72,6 +78,42 @@ class HomeBloc extends Bloc { await _mainAudioService.play(); } + Future preCacheQuestionGifs() async { + try { + final Directory directory = Directory( + '${StoragePath.documentDir}/question_image', + ); + final List files = directory.listSync(); + await Future.wait( + files.map( + (file) => precacheImage(FileImage(File(file.path)), MyContext.get), + ), + ); + } catch (e) { + if (kDebugMode) { + print('$e'); + } + } + } + + Future preCacheAnswerGifs() async { + try { + final Directory directory = Directory( + '${StoragePath.documentDir}/answer_image', + ); + final List files = directory.listSync(); + await Future.wait( + files.map( + (file) => precacheImage(FileImage(File(file.path)), MyContext.get), + ), + ); + } catch (e) { + if (kDebugMode) { + print('$e'); + } + } + } + /// ------------Api Calls------------ FutureOr _getHomeEvent(event, emit) async {} }