lesson_bloc.dart 1.56 KB
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:wow_english/common/request/dao/home_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';

part 'lesson_event.dart';
part 'lesson_state.dart';

class LessonBloc extends Bloc<LessonEvent, LessonState> {

  final int pageIndex;

  final PageController pageController;

  int _currentPageIndex = 0;

  int get currentPageIndex => _currentPageIndex;

  List<CourseModuleEntity?> _listData = [];

  List<CourseModuleEntity?> get listData => _listData;

  LessonBloc(this.pageIndex,this.pageController) : super(LessonInitial()) {
    _currentPageIndex = pageIndex;
    on<PageViewChangeIndexEvent>(_pageIndexChange);
    on<RequestDataEvent>(_requestData);
  }


  void _pageIndexChange(PageViewChangeIndexEvent event,Emitter<LessonState> emitter) async {
    _currentPageIndex = event.index;
    emitter(PageIndexChangeState());
  }

  void _requestData(RequestDataEvent event, Emitter<LessonState> emitter) async {
    try {
      await loading(() async {
        _listData = await HomeDao.courseModule()??[];
        emitter(LessonDataLoadState());
      });
    } catch (e) {
      if (e is ApiException) {
        EasyLoading.showToast(e.message??'请求失败,请检查网络连接');
      }
    }
  }

  @override
  Future<void> close() {
    pageController.dispose();
    return super.close();
  }
}