import 'package:flutter/cupertino.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/models/course_module_entity.dart'; import 'package:wow_english/utils/loading.dart'; import 'package:wow_english/utils/toast_util.dart'; part 'module_event.dart'; part 'module_state.dart'; class ModuleBloc extends Bloc { final int pageIndex; final PageController pageController; int _currentPageIndex = 0; int get currentPageIndex => _currentPageIndex; List _listData = []; List get listData => _listData; ModuleBloc(this.pageIndex, this.pageController) : super(ModuleInitial()) { _currentPageIndex = pageIndex; on(_pageIndexChange); on(_requestData); } void _pageIndexChange(PageViewChangeIndexEvent event, Emitter emitter) async { _currentPageIndex = event.index; emitter(PageIndexChangeState()); } void _requestData(RequestDataEvent event, Emitter emitter) async { try { await loading(() async { _listData = await LessonDao.courseModule() ?? []; emitter(ModuleDataLoadState()); }); } catch (e) { if (e is ApiException) { showToast(e.message ?? '请求失败,请检查网络连接'); } } } @override Future close() { pageController.dispose(); return super.close(); } }