import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:go_router/go_router.dart'; import 'package:hadi_hoda_flutter/core/params/no_params.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/features/intro/domain/usecases/get_files_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 { /// ------------constructor------------ IntroBloc(this._getFilesUseCase, this._loadingStreamUseCase) : super(const IntroState()) { on(_getFilesEvent); loadingStream = _loadingStreamUseCase(); } /// ------------UseCases------------ final GetFilesUseCase _getFilesUseCase; final LoadingStreamUseCase _loadingStreamUseCase; /// ------------Variables------------ Stream loadingStream = Stream.empty(); /// ------------Controllers------------ /// ------------Functions------------ /// ------------Api Calls------------ FutureOr _getFilesEvent( GetFilesEvent event, Emitter emit, ) async { await _getFilesUseCase(NoParams()).then((value) { value.fold( (data) async { await Future.delayed( Duration(milliseconds: 300), () { ContextProvider.context!.goNamed(Routes.languagePage); }, ); }, (error) { emit(state.copyWith(getFilesStatus: BaseError(error.errorMessage))); }, ); }); } }