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:bloc/bloc.dart'; |
||||
|
import 'package:flutter/cupertino.dart'; |
||||
import 'package:go_router/go_router.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/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_event.dart'; |
||||
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart'; |
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart'; |
||||
|
|
||||
class IntroBloc extends Bloc<IntroEvent, IntroState> { |
class IntroBloc extends Bloc<IntroEvent, IntroState> { |
||||
/// ------------constructor------------ |
/// ------------constructor------------ |
||||
IntroBloc( |
|
||||
this._getImagesUseCase, |
|
||||
this._loadingStreamUseCase, |
|
||||
) |
|
||||
: super(const IntroState()) { |
|
||||
on<GetImagesEvent>(_getImagesEvent); |
|
||||
loadingStream = _loadingStreamUseCase(); |
|
||||
} |
|
||||
|
IntroBloc() : super(const IntroState()); |
||||
|
|
||||
/// ------------UseCases------------ |
/// ------------UseCases------------ |
||||
final GetImagesUseCase _getImagesUseCase; |
|
||||
final LoadingStreamUseCase _loadingStreamUseCase; |
|
||||
|
|
||||
/// ------------Variables------------ |
/// ------------Variables------------ |
||||
Stream<DownloadEntity> loadingStream = Stream.empty(); |
|
||||
|
|
||||
/// ------------Controllers------------ |
/// ------------Controllers------------ |
||||
|
|
||||
/// ------------Functions------------ |
/// ------------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