import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wow_english/common/request/dao/lesson_dao.dart'; import 'package:wow_english/common/request/exception.dart'; import 'package:wow_english/common/request/dao/listen_dao.dart'; import 'package:wow_english/models/course_process_entity.dart'; import 'package:wow_english/utils/loading.dart'; import 'package:wow_english/utils/toast_util.dart'; import '../../../models/course_section_entity.dart'; import '../../../models/course_unit_entity.dart'; part 'section_event.dart'; part 'section_state.dart'; class SectionBloc extends Bloc { CourseUnitEntity _courseUnitEntity; CourseUnitEntity get courseUnitEntity => _courseUnitEntity; CourseUnitDetail _courseUnitDetail; CourseUnitDetail get courseUnitDetail => _courseUnitDetail; List? _courseSectionDatas; List? get courseSectionDatas => _courseSectionDatas; CourseProcessEntity? _processEntity; CourseProcessEntity? get processEntity => _processEntity; SectionBloc(this._courseUnitEntity, this._courseUnitDetail) : super(LessonInitial()) { on(_requestData); on(_requestExitClass); on(_requestEnterClass); on(_requestVideoLesson); } void _requestData(RequestDataEvent event, Emitter emitter) async { try { await loading(() async { _courseSectionDatas = await LessonDao.courseSection(courseUnitId: _courseUnitDetail.id!); emitter(LessonDataLoadState()); }); } catch (e) { if (e is ApiException) { showToast(e.message.toString()); } } } void _requestVideoLesson(RequestVideoLessonEvent event, Emitter emitter) async { try { await loading(() async { _processEntity = await ListenDao.process(event.courseLessonId); emitter(RequestVideoLessonState(event.courseLessonId,event.courseType)); }); } catch (e) { if (e is ApiException) { showToast(e.message??'请求失败,请检查网络连接'); } } } void _requestEnterClass(RequestEnterClassEvent event,Emitter emitter) async { try { await loading(() async { await ListenDao.enterClass(event.courseLessonId); emitter(RequestEnterClassState(event.courseLessonId,event.courseType)); }); } catch (e) { if (e is ApiException) { showToast(e.message??'请求失败,请检查网络连接'); } } } void _requestExitClass(RequestExitClassEvent event,Emitter emitter) async { await ListenDao.exitClass(event.courseLessonId,event.currentStep,event.currentTime); } }