【问题标题】:Flutter: possible to wait for sibling widgets to finish building?Flutter:可以等待兄弟小部件完成构建吗?
【发布时间】:2020-09-01 12:14:28
【问题描述】:

标题可能说明了一切。我的场景是我有不同的小部件在等待 firebase 数据构建它们的内容。最后一个小部件应该等待其他小部件完成并根据从 Firebase 检索到的数据进行一些计算。这可能吗?

我已经尝试过 ValueListenableBuilder,它给了我这个错误:

在为 ValueNotifier 分派通知时引发以下断言: 在构建期间调用 setState() 或 markNeedsBuild()。

【问题讨论】:

  • 这是因为你想在 build 方法中做一些事情 - 这是错误的,因为 build 可以被多次调用并且你无法控制 - 如果你有一些使用 @987654323 的数据层@ / Stream 使用他们的 API 找出您的数据何时准备就绪并在那里执行您的代码
  • 完全同意@pskink。我最近也面临同样的问题,我解决了它,但构建了另一个异步方法。在该方法中,我等待 1 微秒,因此构建方法完成,我更改数据并调用 setState。
  • 是否可以在您的方法中添加 Future 而不是等待 1 微秒?我一直认为等待固定时间是不安全(或浪费)的。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

build 方法中使用FutureBuilder 小部件,该小部件用于操作。 FutureBuilder 小部件包含一个名为 future 的属性,该属性采用返回 future 的方法。

在该方法中,您可以使用await 执行第一个查询,并使用第一个查询的结果执行第二个查询。

【讨论】:

  • 谢谢。按照您的方法,我成功构建了它。本质上,我将嵌套的 Firebase 访问放在未来的方法中,在构建上下文之前等待该方法。
猜你喜欢
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 2019-02-10
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多