Forwards an observable property from one object to another. For example:
class MyModel extends Observable {
StreamSubscription _sub;
MyOtherModel _otherModel;
MyModel() {
...
_sub = onPropertyChange(_otherModel, #value,
() => notifyPropertyChange(#prop, oldValue, newValue);
}
String get prop => _otherModel.value;
set prop(String value) { _otherModel.value = value; }
}
See also notifyPropertyChange
.
// TODO(jmesserly): make this an instance method?
StreamSubscription onPropertyChange(Observable source, Symbol sourceName,
void callback()) {
return source.changes.listen((records) {
for (var record in records) {
if (record is PropertyChangeRecord &&
(record as PropertyChangeRecord).name == sourceName) {
callback();
break;
}
}
});
}