Dart Documentationclean_dataTransformedDataBase

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

ChangeNotificationsMixin

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