【问题标题】:setState variable using a different name使用不同名称的 setState 变量
【发布时间】:2019-07-28 11:47:54
【问题描述】:

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

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

【问题讨论】:

    标签: flutter dart setstate


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2013-06-04
      • 2013-11-06
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多