discovery_bloc.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import 'package:eye_video/bizmodule/main/discovery/blocs/discovery_event.dart';
  2. import 'package:eye_video/bizmodule/main/discovery/blocs/discovery_state.dart';
  3. import 'package:eye_video/bizmodule/main/discovery/respositories/discovery_repository.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:eye_video/bizmodule/main/discovery/model/discovery_model.dart';
  6. import 'package:flutter_bloc/flutter_bloc.dart';
  7. class DiscoveryBloc extends Bloc<DiscoveryEvent, DiscoveryState> {
  8. final DiscoveryRepository discoveryRepository;
  9. DiscoveryBloc({required this.discoveryRepository}) : super(null) {
  10. add(DiscoveryRequestEvent());
  11. }
  12. @override
  13. Stream<DiscoveryState> mapEventToState(DiscoveryEvent event) async* {
  14. if (event is DiscoveryRequestEvent) {
  15. yield StateLoading();
  16. try {
  17. final DiscoveryModel discoveryModel =
  18. await discoveryRepository.fetchDiscovery();
  19. if (discoveryModel == null || discoveryModel.discoveryList.isEmpty) {
  20. yield StateEmpty();
  21. } else {
  22. yield StateLoadSuccess(discoveryModel: discoveryModel);
  23. }
  24. } catch (e) {
  25. yield StateLoadFailure();
  26. }
  27. }
  28. }
  29. }