Skip to content

Instantly share code, notes, and snippets.

@Vanethos
Created September 26, 2019 05:44
Show Gist options
  • Save Vanethos/05b9c85913d2fccbcda7f64b06348695 to your computer and use it in GitHub Desktop.
Save Vanethos/05b9c85913d2fccbcda7f64b06348695 to your computer and use it in GitHub Desktop.
class CommonBloc extends BaseBloc {
var _listOfItemsSubject = BehaviorSubject<List<Items>>();
Stream<List<Items>> get listOfItemsStream => _listOfItemsSubject.stream;
var _fetchItemsSubject = PublishSubject<Event>();
Sink<Event> get fetchItemsSink => _fetchItemsSubject.sink;
CommonBloc(ItemsManager manager) {
_fetchItemsSubject.stream
.flatMap((_) => manager.fetchItems())
.listen(_listOfItemsSubject.add, error: (e) => handleError(e));
_fetchItemsSubject.add(Event())
}
}
class ListBloc extends BaseBloc {
ListBloc() {
//...
}
}
class CategoryBloc extends BaseBloc {
CategoryBloc() {
// ...
}
}
class AddBloc extends BaseBloc {
var _addItemSubject = PublishSubject<Input>();
Sink<Input> get addItemSink => _addItemSubject.sink;
var _addResponseSubject = PublishSubject<Item>();
Stream<Item> get addResponseStream => _addResponseSubject.stream;
AddBloc(ItemsManager manager) {
_addItemSubject
.stream
.flatMap((input) => manager.addItem(input))
.listen(_addResponseSubject.add, error: (e) => handleError(e));
}
}
class EditBloc extends BaseBloc {
var _editItemSubject = PublishSubject<Input>();
Sink<Input> get editItemSink => _editItemSubject.sink;
var _editResponseSubject = PublishSubject<Item>();
Stream<Item> get editResponseStream => _editResponseSubject.stream;
AddBloc(ItemsManager manager) {
_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