main_bloc.dart 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import 'package:eye_video/bizmodule/main/thiz/blocs/main_event.dart';
  2. import 'package:eye_video/bizmodule/main/thiz/blocs/main_state.dart';
  3. import 'package:eye_video/bizmodule/main/thiz/repositories/main_repository.dart';
  4. import 'package:flutter_bloc/flutter_bloc.dart';
  5. class MainBloc extends Bloc<MainEvent, MainState> {
  6. final MainRepository mainRepository;
  7. MainBloc({this.mainRepository}) : super(null) {
  8. add(DrawerRequestEvent());
  9. }
  10. @override
  11. Stream<MainState> mapEventToState(MainEvent event) async* {
  12. if (event is DrawerRequestEvent) {
  13. try {
  14. var userModel = await mainRepository.fetchUserInfo();
  15. var drawerConfigsModel = await mainRepository.fetchDrawerConfigs();
  16. if (drawerConfigsModel.configs.isEmpty &&
  17. drawerConfigsModel.extendConfigs.isEmpty &&
  18. userModel == null) {
  19. yield DrawerLoadedEmptyState();
  20. }
  21. yield DrawerLoadedState(
  22. userModel: userModel, configsModel: drawerConfigsModel);
  23. } catch (e) {
  24. yield DrawerLoadedErrorState();
  25. }
  26. }
  27. }
  28. }