import 'package:bloc/bloc.dart'; import 'package:wow_english/pages/unit/widget/home_tab_header_widget.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; UnitBloc(CourseModuleEntity? courseEntity) : super(UnitState().init()) { on(_requestData); } void _requestData(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) { if (type == HeaderActionType.video) { pushNamed(AppRouteName.reAfter); } else if (type == HeaderActionType.phase) { pushNamed(AppRouteName.courseModule); } else if (type == HeaderActionType.listen) { pushNamed(AppRouteName.listen); } else if (type == HeaderActionType.shop) { pushNamed(AppRouteName.shop); } else if (type == HeaderActionType.user) { pushNamed(AppRouteName.user); } } }