Skip to content

Instantly share code, notes, and snippets.

@Vanethos
Created September 26, 2019 05:44
Show Gist options
  • Save Vanethos/02ec31b0747e9b11a256014f3476dd9e to your computer and use it in GitHub Desktop.
Save Vanethos/02ec31b0747e9b11a256014f3476dd9e to your computer and use it in GitHub Desktop.
class ItemsBloc extends BaseBloc {
//region Fetch Items
var _listOfItemsSubject = BehaviorSubject<List<Items>>();
Stream<List<Items>> get listOfItemsStream => _listOfItemsSubject.stream;
var _fetchItemsSubject = PublishSubject<Event>();
Sink<Event> get fetchItemsSink => _fetchItemsSubject.sink;
//endregion
//region Add Items
var _addItemSubject = PublishSubject<Input>();
Sink<Input> get addItemSink => _addItemSubject.sink;
var _addResponseSubject = PublishSubject<Item>();
Stream<Item> get addResponseStream => _addResponseSubject.stream;
//endregion
//region Edit Items
var _editItemSubject = PublishSubject<Input>();
Sink<Input> get editItemSink => _editItemSubject.sink;
var _editResponseSubject = PublishSubject<Item>();
Stream<Item> get editResponseStream => _editResponseSubject.stream;
//endregion
ItemsBloc(ItemsManager manager) {
_fetchItems();
_addItems();
_editItems();
}
void _fetchItems() {
_fetchItemsSubject.stream
.flatMap((_) => manager.fetchItems())
.listen(_listOfItemsSubject.add, error: (e) => handleError(e));
_fetchItemsSubject.add(Event())
}
void _addItems() {
_addItemSubject
.stream
.flatMap((input) => manager.addItem(input))
.listen(_addResponseSubject.add, error: (e) => handleError(e));
}
void _editItems() {
_editItemSubject
.stream
.flatMap((input) => manager.editItem(input))
.listen(_editResponseSubject.add, error: (e) => handleError(e));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment