lesson_bloc.dart 1.55 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);
  }

  Future<void> requestData() async {
    try {
      await loading(() async {
        var list = await HomeDao.courseModule();
        if (list?.isNotEmpty == true) {
          _listData = list!;
          emit(LessonDataLoadState());
        } else {
          EasyLoading.showToast("数据获取失败!");
        }
      });
    } catch (e) {
      if (e is ApiException) {
      }
    }
  }

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

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