lesson_bloc.dart 1.59 KB
import 'dart:convert';

import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:wow_english/common/request/dao/home_dao.dart';
import 'package:wow_english/common/request/exception.dart';
import 'package:wow_english/models/lesson_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<LessonEntity?> _listData = [];
  List<LessonEntity?> get listData => _listData;

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

  Future<void> requestData() async {
    try {
      await loading(() async {
        List list = await HomeDao.courseModule()??[];
        // if (list.isNotEmpty) {
        //   for (dynamic jsonStr in list) {
        //     LessonEntity? data = LessonEntity.fromJson(jsonStr);
        //     _listData.add(data);
        //   }
        // }
        emit(LessonDataLoadState());
      });
    } 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();
  }
}