reading_bloc.dart 1.38 KB
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:wow_english/pages/reading/widgets/ReadingModeType.dart';

part 'reading_event.dart';
part 'reading_state.dart';

class ReadingPageBloc extends Bloc<ReadingPageEvent, ReadingPageState> {

  final PageController pageController;

  ///当前页索引
  int _currentPage = 0;

  ///当前播放模式
  ReadingModeType _currentMode = ReadingModeType.auto;

  int get currentPage => _currentPage + 1;

  ReadingModeType get currentMode => _currentMode;

  ReadingPageBloc(this.pageController) : super(ReadingPageInitial()) {
    on<CurrentPageIndexChangeEvent>(_pageControllerChange);
    on<CurrentModeChangeEvent>(_selectItemLoad);
    // pageController.addListener(() {
    //   _currentPage = pageController.page!.round();
    // });
  }

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

  void _pageControllerChange(CurrentPageIndexChangeEvent event, Emitter<ReadingPageState> emitter) async {
    _currentPage = event.pageIndex;
    emitter(CurrentPageIndexState());
  }

  void _selectItemLoad(CurrentModeChangeEvent event, Emitter<ReadingPageState> emitter) async {
    if (_currentMode == ReadingModeType.auto) {
      _currentMode = ReadingModeType.manual;
    } else {
      _currentMode = ReadingModeType.auto;
    }
    emitter(CurrentModeState());
  }
}