TransformedDataBase abstract class
abstract class TransformedDataBase implements ChangeNotificationsMixin { /** * The source [ChangeNotificationsMixin](s) this collection is derived from. */ List<dynamic> sources; List<StreamSubscription> _sourcesSubscription; /** * Reflects [changes] in the collection w.r.t. [config]. */ void _mergeIn(ChangeSet changes, int sourceNumber, {author}) { changes.addedItems.forEach((dataObj) => _treatAddedItem(dataObj, sourceNumber)); changes.removedItems.forEach((dataObj) => _treatRemovedItem(dataObj, sourceNumber)); changes.strictlyChanged.forEach((dataObj,changes) => _treatChangedItem(dataObj, changes, sourceNumber)); var items = changes.addedItems.union(changes.removedItems).union(new Set.from(changes.changedItems.keys)); for (var item in items) { _treatItem(item, changes.strictlyChanged[item]); } _notify(author: author); } // Overridable methods follow void _treatAddedItem(dataObj, int sourceNumber) {} void _treatRemovedItem(dataObj, int sourceNumber) {} void _treatChangedItem(dataObj, ChangeSet c, int sourceNumber) {} void _treatItem(dataObj, changeSet) {} }
Implements
Properties
final Stream<dynamic> onBeforeAdd #
inherited from ChangeNotificationsMixin
Stream populated with DataMapView events before any data object is added.
Stream<dynamic> get onBeforeAdd { if(_onBeforeAddedController == null) { _onBeforeAddedController = new StreamController.broadcast(sync: true); } return _onBeforeAddedController.stream; }
final Stream<dynamic> onBeforeRemove #
inherited from ChangeNotificationsMixin
Stream populated with DataMapView events before any data object is removed.
Stream<dynamic> get onBeforeRemove { if(_onBeforeRemovedController == null) { _onBeforeRemovedController = new StreamController.broadcast(sync: true); } return _onBeforeRemovedController.stream; }
final Stream<ChangeSet> onChange #
inherited from ChangeNotificationsMixin
Stream populated with ChangeSet events whenever the collection or any of data object contained gets changed.
Stream<ChangeSet> get onChange { if(_onChangeController == null) { _onChangeController = new StreamController.broadcast(); } return _onChangeController.stream; }
final Stream<Map> onChangeSync #
inherited from ChangeNotificationsMixin
Stream populated with {'change': ChangeSet, 'author': dynamic
} events
synchronously at the moment when the collection or any data object contained
gets changed.
Stream<Map> get onChangeSync => _onChangeSyncController.stream;
List<dynamic> sources #
The source ChangeNotificationsMixin this collection is derived from.
List<dynamic> sources