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/routers/my_routes.dart'; import 'package:hadi_hoda_flutter/core/status/base_status.dart'; import 'package:hadi_hoda_flutter/core/widgets/about_us_dialog/about_us_dialog.dart'; import 'package:hadi_hoda_flutter/features/home/domain/entity/home_entity.dart'; import 'package:hadi_hoda_flutter/features/home/domain/usecases/get_home_usecase.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'; class HomeBloc extends Bloc { /// ------------constructor------------ HomeBloc( this._getHomeUseCase, ) : super(const HomeState()) { on(_getHomeEvent); } /// ------------UseCases------------ final GetHomeUseCase _getHomeUseCase; /// ------------Variables------------ /// ------------Controllers------------ /// ------------Functions------------ void goToLevelPage(BuildContext context){ context.pushNamed(Routes.levelPage); } void goToLanguagePage(BuildContext context){ context.pushNamed(Routes.languagePage); } void showAboutUs(BuildContext context){ showAboutUsDialog(context: context); } /// ------------Api Calls------------ FutureOr _getHomeEvent(event, emit) async { await _getHomeUseCase(event.homeParams).then( (value) { value.fold( (data) { emit(state.copyWith(getHomeStatus: BaseComplete(data))); }, (error) { emit(state.copyWith(getHomeStatus: BaseError(error.errorMessage))); }, ); }, ); } }