使用不同名称的 setState 变量

setState variable using a different name

我正在尝试 运行 以下代码:

bool isCollapsed;
bool isClosed;

void myFunc(bool isDone){
  if (condition) {
    setState(() => isDone = true);
  }
}

...

    myFunc(isCollapsed);  // somewhere in the code

...

    myFunc(isClosed);  // somewhere in the code

基本上我想为两个状态变量创建一个函数,所以我试图将状态变量传递给函数。但这显然行不通。我听说 Dart web 或 Flutter 中不允许使用变量表示(仅 Dart 服务器 VM),我自己没有找到解决方法。

那是不可能的。

Dart 中没有办法做这样的事情。唯一可能的解决方法是使用 dart:mirror,但它在 Flutter 中被禁用。

但是您可以更改函数的原型以采用用于修改变量的闭包:

void myFunc(bool value, ValueChanged<bool> valueChanged) {
  if (foo) {
    setState(() => valueChanged(true));
  }
}


myFunc(isCollapsed, (value) => isCollapsed = value);

myFunc(isClosed, (value) => isClosed = value);