Advertisement
Guest User

bloc

a guest
Dec 16th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.49 KB | None | 0 0
  1. import 'dart:async';
  2.  
  3. import 'package:meta/meta.dart';
  4. import 'package:bloc/bloc.dart';
  5. import 'package:equatable/equatable.dart';
  6.  
  7. import 'package:Countify/api/api.dart';
  8. import 'package:Countify/models/rooms_list.dart';
  9.  
  10.  
  11. //EVENTS
  12. abstract class RoomsListEvent extends Equatable {
  13.   const RoomsListEvent();
  14. }
  15.  
  16. class FetchRoomsList extends RoomsListEvent {
  17.   //final String roba;
  18.  
  19.   const FetchRoomsList();//({@required this.roba}); : assert(roba != null);
  20.  
  21.   @override
  22.   List<Object> get props => [];
  23. }
  24.  
  25. class RefreshRoomsList extends RoomsListEvent {
  26.  
  27.   const RefreshRoomsList();
  28.  
  29.   @override
  30.   List<Object> get props => [];
  31. }
  32.  
  33. class RoomCounterUpdate extends RoomsListEvent {
  34.   final String roomid;
  35.   final int delta;
  36.  
  37.   const RoomCounterUpdate({@required this.roomid, this.delta}) : assert(roomid != null && delta != null);
  38.  
  39.   @override
  40.   List<Object> get props => [];
  41. }
  42.  
  43.  
  44.  
  45. //STATES
  46. abstract class RoomsListState extends Equatable {
  47.   const RoomsListState();
  48.  
  49.   @override
  50.   List<Object> get props => [];
  51. }
  52.  
  53. class RoomsListEmpty extends RoomsListState {}
  54.  
  55. class RoomsListLoading extends RoomsListState {}
  56.  
  57. class RoomsListLoaded extends RoomsListState {
  58.   final RoomsList roomsList;
  59.  
  60.   const RoomsListLoaded({@required this.roomsList}) : assert(roomsList != null);
  61.  
  62.   @override
  63.   List<Object> get props => [roomsList];
  64. }
  65.  
  66. class RoomsListError extends RoomsListState {}
  67.  
  68.  
  69.  
  70. //BLOC
  71. class RoomsListBloc extends Bloc<RoomsListEvent, RoomsListState> {
  72.   final Api api;
  73.  
  74.   RoomsListBloc({@required this.api})
  75.       : assert(api != null);
  76.  
  77.   @override
  78.   RoomsListState get initialState => RoomsListEmpty();
  79.  
  80.   @override
  81.   Stream<RoomsListState> mapEventToState(RoomsListEvent event) async* {
  82.     if (event is FetchRoomsList) {
  83.       yield RoomsListLoading();
  84.       try {
  85.         final RoomsList roomsList = await api.getRooms();
  86.         yield RoomsListLoaded(roomsList: roomsList);
  87.       } catch (_) {
  88.         yield RoomsListError();
  89.       }
  90.     }
  91.  
  92.     if (event is RefreshRoomsList) {
  93.       try {
  94.         final RoomsList roomsList = await api.getRooms();
  95.  
  96.         yield RoomsListLoaded(roomsList: roomsList);
  97.       } catch (_) {
  98.         yield state;
  99.       }
  100.     }
  101.  
  102.     if (event is RoomCounterUpdate) {
  103.       try {
  104.         //da ricontrollare
  105.         final RoomsList roomsList = await api.updateRoom(event.roomid, event.delta);
  106.         yield RoomsListLoaded(roomsList: roomsList);
  107.       } catch (_) {
  108.         yield state;
  109.       }
  110.     }
  111.   }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement