【问题标题】:Unable to assign value from then callback无法从回调中赋值
【发布时间】:2021-08-23 21:16:31
【问题描述】:

我正在尝试获取 Future 值并将其分配给布尔值。我不能使用异步/等待。 这是我的代码,但 value 只打印空值。 futureFunction 返回Future<bool>

bool value;
futureFunction().then((a) { value = a; } );
print(value);

【问题讨论】:

  • futureFunction 返回 bool 吗?
  • futureFunction 返回 Future @KrishBhanushali

标签: flutter dart


【解决方案1】:

then 不会等待完成任何任务。完成future函数后,then里面的代码就会执行。使用then 使用await 关键字的状态,不要忘记使函数异步。 示例:

getBool() async{
 bool value = await futureFunction();
 print(value);
}

【讨论】:

  • 谢谢,但我已经提到我不能异步//等待。我需要一个没有它的解决方案
  • 你能告诉我那个布尔值的用途吗?您要更新 UI 还是其他内容?
  • 返回值在条件运算符中用于生成小部件。基本上 (boolReturn?widget1:widget2)
  • 那么你应该使用 FutureBuilder
【解决方案2】:

如果你把它放在 StatefulWidget 中,这应该可以工作

bool value;

_StatefulWidgetDemoState() {
  futureFunction().then(
    (returnedValue) => setState(() {
      value = returnedValue;
    })
  );
}

【讨论】:

  • 我已经尝试过了,但似乎不起作用...可能此代码位于 State 而不是 StatefeulWidget IDK。但它确实在控制台中反复打印一些东西,所以不是一个好兆头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
相关资源
最近更新 更多