category_bloc.dart 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import 'package:eye_video/bizmodule/blocs.dart';
  2. import 'package:eye_video/bizmodule/main/category/model/category_model.dart';
  3. import 'package:eye_video/bizmodule/main/category/repositories/category_repository.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter_bloc/flutter_bloc.dart';
  6. class CategoryBloc extends Bloc<CategoryEvent, CategoryState> {
  7. final CategoryRepository categoryRepository;
  8. CategoryBloc({required this.categoryRepository}) : super(null) {
  9. add(EventRequestCategory()); //初始状态,手动添加首次请求事件
  10. }
  11. Stream<CategoryState> mapEventToState(CategoryEvent event) async* {
  12. if (event is EventRequestCategory) {
  13. yield StateLoading();
  14. try {
  15. final CategoryModel categoryModel =
  16. await categoryRepository.fetchCategories();
  17. if (categoryModel == null || categoryModel.categoryList.isEmpty) {
  18. yield StateEmpty();
  19. } else {
  20. yield StateLoadSuccess(categoryModel: categoryModel);
  21. }
  22. } catch (e) {
  23. yield StateLoadFailure();
  24. }
  25. }
  26. }
  27. }