gpt4 book ai didi

dart - 在Dart中将可观察属性从一个对象转发到另一个

转载 作者:行者123 更新时间:2023-12-03 04:06:32 29 4
gpt4 key购买 nike

我想检测一个对象的属性更改,然后将该值转发(或重新计算该值并将结果传递)给另一个对象的属性。我从文档中看到了演示值(value)转发的示例:

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

但是我不知道从哪里获取oldValue和newValue。
我认为这些应该作为参数传递给onPropertyChange的回调(第三个参数),但事实并非如此。回调不提供任何参数。这是疏忽还是我错过了什么?

最佳答案

import 'dart:async';
import 'package:observe/observe.dart';
class MyOtherModel extends Object with Observable {
@observable
String value;
}

class MyModel extends Object with Observable {
StreamSubscription _sub;
MyOtherModel _otherModel = new MyOtherModel();

MyModel() {

///...
_otherModel.changes.listen((crs) {
crs.forEach((PropertyChangeRecord cr) =>
notifyPropertyChange(#prop, cr.oldValue, cr.newValue));
});
}

String get prop => _otherModel.value;
set prop(String value) => _otherModel.value = value;
}

void main() {
MyModel m = new MyModel();
m.prop = 'bla';
m.changes.listen(print);
// initiate change notification
Observable.dirtyCheck();
}

输出
[#<PropertyChangeRecord Symbol("value") from: null to: bla>]

关于dart - 在Dart中将可观察属性从一个对象转发到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096822/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com