使用不同名称的 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);
我正在尝试 运行 以下代码:
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);