import 'package:bloc/bloc.dart'; import 'package:wow_english/pages/unit/widget/home_tab_header_widget.dart'; import 'package:wow_english/utils/audio_player_util.dart'; import '../../common/request/dao/lesson_dao.dart'; import '../../common/request/exception.dart'; import '../../models/course_module_entity.dart'; import '../../models/course_unit_entity.dart'; import '../../route/route.dart'; import '../../utils/loading.dart'; import '../../utils/toast_util.dart'; import 'event.dart'; import 'state.dart'; class UnitBloc extends Bloc { CourseModuleEntity? _moduleEntity; CourseModuleEntity? get moduleEntity => _moduleEntity; CourseUnitEntity? _unitData; CourseUnitEntity? get unitData => _unitData; bool exchangeResult = false; UnitBloc(CourseModuleEntity? courseEntity) : super(UnitState().init()) { on(_requestUnitDatas); on((event, emit) { AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.inMyTummy); }); } void _requestUnitDatas( RequestUnitDataEvent event, Emitter emitter) async { try { await loading(() async { _unitData = await LessonDao.courseUnit(event.moduleId); emitter(UnitDataLoadState()); }); } catch (e) { if (e is ApiException) { showToast(e.message ?? '请求失败,请检查网络连接'); } } } String? getCourseModuleCode() { return _moduleEntity?.code ?? _unitData?.courseModuleCode; } void headerActionEvent(HeaderActionType type) { AudioPlayerUtil.getInstance().pause(); if (type == HeaderActionType.video) { pushNamed(AppRouteName.reAfter); } else if (type == HeaderActionType.phase) { pushNamed(AppRouteName.courseModule).then((value) => { AudioPlayerUtil.getInstance() .playAudio(AudioPlayerUtilType.inMyTummy) }); ; } else if (type == HeaderActionType.listen) { pushNamed(AppRouteName.listen).then((value) => { AudioPlayerUtil.getInstance() .playAudio(AudioPlayerUtilType.inMyTummy) }); } else if (type == HeaderActionType.shop) { pushNamed(AppRouteName.shop).then((value) => { AudioPlayerUtil.getInstance() .playAudio(AudioPlayerUtilType.inMyTummy), exchangeResult = value['exchange'] }); } else if (type == HeaderActionType.user) { pushNamed(AppRouteName.user); } } }