Dart 中的私人二传手

Fil*_*cks 8 dart flutter

我一直在寻找,但找不到任何对此的参考。我想在 Dart 中创建一个私有 setter 以在更改私有变量后调用附加函数。

ViewState _state;

ViewState get state => _state;

set _state(value) {
  _state = value;
  notifyListeners();
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Scr*_*bot 11

Dart 不允许私人设置器,这是事实。您可以使用自己的私有函数来破解它

ViewState _state;

ViewState get state => _state;

void _changeState(value) {
  _state = value;
  notifyListeners();
}
Run Code Online (Sandbox Code Playgroud)

这是我在DartPad上的示例,您可以在其中进行一些实验。


Spe*_*ark 8

私有 setter 没有错,只是命名的选择。

正如你不能state用作变量名,因为它是 getter 的名字,你不能用作_state变量和 setter。

这有点难看,但__state用于您的变量(并相应地更新 getter 和 setter)应该可以完成工作。

编辑:正如评论中提到的,名称__state并不重要,它只需要是一个不被 getter/setter 使用的名称。_myState带有 getterstate和 setter 的变量也能_state正常工作。