Dart 如何适应可观测场的变化

Dart 如何适应可观测场的变化,dart,dart-polymer,Dart,Dart Polymer,直到最近,我还可以使用bindProperty,如下图或中所示,但这在0.8.0中有所改变,我不知道如何更改代码以获得旧的行为(doSomething()被调用): Polymer.dart>=1.0.0 @Property(observer: 'doSomething') bool isLoggedIn; @reflectable void doSomething(bool newValue, bool oldValue) => ... 或 Polymer.dartnotifyPr

直到最近,我还可以使用bindProperty,如下图或中所示,但这在0.8.0中有所改变,我不知道如何更改代码以获得旧的行为(doSomething()被调用):



Polymer.dart>=1.0.0

@Property(observer: 'doSomething') bool isLoggedIn;

@reflectable
void doSomething(bool newValue, bool oldValue) => ...

Polymer.dart<1.0.0

@Property(observer: 'doSomething') bool isLoggedIn;

@reflectable
void doSomething(bool newValue, bool oldValue) => ...
好的,找到了

new PathObserver(model, "isLoggedIn").changes.listen((e) => doSomething());

对于Polymer.dart 0.8或更高版本,您也可以使用此方便表单:

isLoggedInChanged(旧值){
doSomething();
}
请注意,如何在PolymRelation中创建一个使用yourFieldName*名称的方法

这里还定义了
onPropertyChange

从文档中:

classmymodel扩展了observebase{
StreamSubscription;
肌热模型;
MyModel(){
...
_sub=onPropertyChange(_otherModel,常量符号('value'),
()=>notifyProperty(这个,常量符号('prop'));
}
字符串get prop=>\u otherModel.value;
设置属性(字符串值){u otherModel.value=value;}
}

语法似乎有点变化。 甘特提出的解决方案的语法现在似乎是:

newpathobserver(model,“isLoggedIn”).open((e)=>doSomething());