Flutter 在setState中使用异步操作的解决方法

Flutter 在setState中使用异步操作的解决方法,flutter,Flutter,我有一个异步操作,其结果应该重建一个小部件 setState()doc说 提供的回调将立即同步调用。它决不能这样做 返回一个未来(回调不能是异步的),因为它将是 还不清楚该州是何时实际设置的 因此,我有一个简单的解决方法,它符合我的目的,但我不确定这是否是正确的方法 // awaiting for an async operation distanceFromCenter = await Geolocator().distanceBetween( selectedLocation.latit

我有一个异步操作,其结果应该重建一个小部件

setState()
doc说

提供的回调将立即同步调用。它决不能这样做 返回一个未来(回调不能是异步的),因为它将是 还不清楚该州是何时实际设置的

因此,我有一个简单的解决方法,它符合我的目的,但我不确定这是否是正确的方法

// awaiting for an async operation
distanceFromCenter = await Geolocator().distanceBetween(
  selectedLocation.latitude,
  selectedLocation.longitude,
  ReferencePoint.latitude,
  ReferencePoint.longitude);
setState(() {
// A colleague might not know why we're calling the setState() here
});

欢迎提出任何建议。

您最初的问题是什么?你到底想要实现什么?@pskink。将改变状态的计算放在setState()中显式地告诉我们需要重建小部件,因为状态已改变。在这里(参见编辑),我们有一个setState(),它没有向同事解释我们重建小部件的确切原因。。也许,我们可以使用注释。但我觉得这不是正确的方法,或者是吗?@pskink在上述情况下,我希望在
setState()
内计算
distance fromCenter
,但我不能这样做,因为它是一个
异步
函数。我想这清楚地提到了我的意图。好的,如果你真的需要将
distanceFromCenter
放在回调中,那么使用
var distance=wait。。。。;setState((){distanceFromCenter=distance;})
@pskink哦,好的!然后,也许可以使用注释让同事知道我们为什么调用setState()。可以我要了。