Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:meta/meta.dart';
- import 'package:bloc/bloc.dart';
- import 'package:equatable/equatable.dart';
- import 'package:Countify/api/api.dart';
- import 'package:Countify/models/rooms_list.dart';
- //EVENTS
- abstract class RoomsListEvent extends Equatable {
- const RoomsListEvent();
- }
- class FetchRoomsList extends RoomsListEvent {
- //final String roba;
- const FetchRoomsList();//({@required this.roba}); : assert(roba != null);
- @override
- List<Object> get props => [];
- }
- class RefreshRoomsList extends RoomsListEvent {
- const RefreshRoomsList();
- @override
- List<Object> get props => [];
- }
- class RoomCounterUpdate extends RoomsListEvent {
- final String roomid;
- final int delta;
- const RoomCounterUpdate({@required this.roomid, this.delta}) : assert(roomid != null && delta != null);
- @override
- List<Object> get props => [];
- }
- //STATES
- abstract class RoomsListState extends Equatable {
- const RoomsListState();
- @override
- List<Object> get props => [];
- }
- class RoomsListEmpty extends RoomsListState {}
- class RoomsListLoading extends RoomsListState {}
- class RoomsListLoaded extends RoomsListState {
- final RoomsList roomsList;
- const RoomsListLoaded({@required this.roomsList}) : assert(roomsList != null);
- @override
- List<Object> get props => [roomsList];
- }
- class RoomsListError extends RoomsListState {}
- //BLOC
- class RoomsListBloc extends Bloc<RoomsListEvent, RoomsListState> {
- final Api api;
- RoomsListBloc({@required this.api})
- : assert(api != null);
- @override
- RoomsListState get initialState => RoomsListEmpty();
- @override
- Stream<RoomsListState> mapEventToState(RoomsListEvent event) async* {
- if (event is FetchRoomsList) {
- yield RoomsListLoading();
- try {
- final RoomsList roomsList = await api.getRooms();
- yield RoomsListLoaded(roomsList: roomsList);
- } catch (_) {
- yield RoomsListError();
- }
- }
- if (event is RefreshRoomsList) {
- try {
- final RoomsList roomsList = await api.getRooms();
- yield RoomsListLoaded(roomsList: roomsList);
- } catch (_) {
- yield state;
- }
- }
- if (event is RoomCounterUpdate) {
- try {
- //da ricontrollare
- final RoomsList roomsList = await api.updateRoom(event.roomid, event.delta);
- yield RoomsListLoaded(roomsList: roomsList);
- } catch (_) {
- yield state;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement