【发布时间】:2019-04-20 01:38:59
【问题描述】:
我一直在寻找,但找不到任何关于此的参考。更改私有变量后,我想在 Dart 中创建一个私有 setter 来调用附加函数。
ViewState _state;
ViewState get state => _state;
set _state(value) {
_state = value;
notifyListeners();
}
我怎样才能做到这一点?
【问题讨论】:
我一直在寻找,但找不到任何关于此的参考。更改私有变量后,我想在 Dart 中创建一个私有 setter 来调用附加函数。
ViewState _state;
ViewState get state => _state;
set _state(value) {
_state = value;
notifyListeners();
}
我怎样才能做到这一点?
【问题讨论】:
私有 setter 没有什么问题,只是命名的选择。
正如你不能使用state 作为变量的名称,因为它是getter 的名称,你不能使用_state 作为变量和setter。
这有点难看,但使用 __state 作为变量(并相应地更新 getter 和 setter)应该可以完成工作。
编辑:正如 cmets 中所述,名称 __state 并不重要,它只需要是一个不被 getter/setter 采用的名称。带有 getter state 和 setter _state 的变量 _myState 也可以正常工作。
【讨论】:
_rawState),它就应该可以工作。也就是说,有一个没有同名 getter 的 setter 是不寻常的,我认为单独的 _setState 方法会更清晰。
Dart 不允许私人二传手,这是真的。你可以用你自己的私有函数破解它
ViewState _state;
ViewState get state => _state;
void _changeState(value) {
_state = value;
notifyListeners();
}
这是我在DartPad 上的示例,您可以在其中进行一些实验。
【讨论】: