function onPropertyChange


StreamSubscription onPropertyChange(Observable source, Symbol sourceName, void callback())

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.

Source

// 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;
      }
    }
  });
}