setState变量使用其他名称

时间:2019-07-28 11:47:54

标签: flutter dart setstate

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

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),我自己也没有解决方法。

1 个答案:

答案 0 :(得分:1)

那是不可能的。

在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);