3 changed files with 79 additions and 126 deletions
-
58lib/common_ui/resources/my_assets.dart
-
65lib/features/intro/presentation/bloc/intro_bloc.dart
-
82lib/features/intro/presentation/ui/intro_page.dart
@ -1,64 +1,39 @@ |
|||
import 'dart:async'; |
|||
|
|||
import 'package:bloc/bloc.dart'; |
|||
import 'package:flutter/cupertino.dart'; |
|||
import 'package:go_router/go_router.dart'; |
|||
import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; |
|||
import 'package:hadi_hoda_flutter/core/params/no_params.dart'; |
|||
import 'package:hadi_hoda_flutter/common_ui/resources/my_assets.dart'; |
|||
import 'package:hadi_hoda_flutter/core/routers/my_routes.dart'; |
|||
import 'package:hadi_hoda_flutter/core/status/base_status.dart'; |
|||
import 'package:hadi_hoda_flutter/core/utils/context_provider.dart'; |
|||
import 'package:hadi_hoda_flutter/core/utils/local_storage.dart'; |
|||
import 'package:hadi_hoda_flutter/features/download/domain/entities/download_entity.dart'; |
|||
import 'package:hadi_hoda_flutter/features/intro/domain/usecases/get_images_usecase.dart'; |
|||
import 'package:hadi_hoda_flutter/features/intro/domain/usecases/loading_stream_usecase.dart'; |
|||
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_event.dart'; |
|||
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart'; |
|||
|
|||
class IntroBloc extends Bloc<IntroEvent, IntroState> { |
|||
/// ------------constructor------------ |
|||
IntroBloc( |
|||
this._getImagesUseCase, |
|||
this._loadingStreamUseCase, |
|||
) |
|||
: super(const IntroState()) { |
|||
on<GetImagesEvent>(_getImagesEvent); |
|||
loadingStream = _loadingStreamUseCase(); |
|||
} |
|||
IntroBloc() : super(const IntroState()); |
|||
|
|||
/// ------------UseCases------------ |
|||
final GetImagesUseCase _getImagesUseCase; |
|||
final LoadingStreamUseCase _loadingStreamUseCase; |
|||
|
|||
/// ------------Variables------------ |
|||
Stream<DownloadEntity> loadingStream = Stream.empty(); |
|||
|
|||
/// ------------Controllers------------ |
|||
|
|||
/// ------------Functions------------ |
|||
Future<void> _precacheAllImages(BuildContext context) async { |
|||
await Future.wait( |
|||
MyAssets.images.map( |
|||
(assetPath) => precacheImage(AssetImage(assetPath), context), |
|||
), |
|||
); |
|||
} |
|||
|
|||
/// ------------Api Calls------------ |
|||
FutureOr<void> _getImagesEvent( |
|||
GetImagesEvent event, |
|||
Emitter<IntroState> emit, |
|||
) async { |
|||
emit(state.copyWith(getFilesStatus: BaseInit())); |
|||
await _getImagesUseCase(NoParams()).then((value) { |
|||
value.fold( |
|||
(data) async { |
|||
if(LocalStorage.readData(key: MyConstants.firstLanguagePage) != 'true'){ |
|||
ContextProvider.context.goNamed(Routes.languagePage); |
|||
} else { |
|||
await Future.delayed(Duration(milliseconds: 500), () { |
|||
if (ContextProvider.context.mounted) { |
|||
ContextProvider.context.goNamed(Routes.homePage); |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
(error) async { |
|||
emit(state.copyWith(getFilesStatus: BaseError(error.errorMessage))); |
|||
}, |
|||
); |
|||
}); |
|||
Future<void> goToHomePage(BuildContext context) async { |
|||
if (context.mounted) { |
|||
await _precacheAllImages(context); |
|||
} |
|||
|
|||
if (context.mounted) { |
|||
context.goNamed(Routes.homePage); |
|||
} |
|||
} |
|||
|
|||
/// ------------Api Calls------------ |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue