FutureBuilder 与 Streambuilder

Posted

技术标签:

【中文标题】FutureBuilder 与 Streambuilder【英文标题】:FutureBuilder vs Streambuilder 【发布时间】:2020-11-09 16:41:16 【问题描述】:

大家好,我想从 Cloud Firestore 中获取数据,但我不太确定在 Flutter 中使用哪个更有效。我应该使用流构建器还是未来构建器。我有很多帖子,但我不太了解其中的差异。谁能告诉我是否应该使用 streambuilder 或 futurebuilder 从 firestore 获取数据

【问题讨论】:

你能描述一下你没有得到什么吗?因为 SO 已经有很多答案了。 我不知道哪种方法可以有效地从 firestore 获取数据,因为我不想向 firestore 发出很多请求 【参考方案1】:

StreamBuilderFutureBuilder 具有相同的行为:它们监听各自对象的变化。并在收到新值通知时触发新构建。

最终,不同之处在于他们收听async calls 的方式。

未来建造者

它只有一个响应。颤振Future 的一个非常常见的用法是在http 调用期间。 Future可以做的就是监听它的状态,也就是通过Future获取数据后完成或者出错的时候

STREAMBUILDER

另一方面,StreamIterators,它可以同化不同的值,这些值会随着时间而改变。通过使用Stream您将获得每个新值,并且如果它有一些错误或完成并显示成功消息

代表:

switch (snapshot.connectionState)
   case ConnectionState.none: //do something
   break;
   case ConnectionState.waiting: //do something
   break;
   case ConnectionState.active: //do something
   break;
   case ConnectionState.done: //do somethin
   break;
   

上述内容每次都会运行,如果来自异步数据的值发生变化,则更新该值,即使您正在使用该应用程序也是如此。它不会停止。并显示您放入特定案例中的数据。

现在是最终答案

如果上面的内容仍然没有让你很清楚,那么看看下面的数据:

    如果您的用例只是获取数据并显示它,例如Total number of courses from a class from API。然后你可以使用FutureBuilder。 如果在您使用应用程序时,数据每秒或每分钟更新一次,例如 upcoming posts in a blogincrease comments on the blogincrease in likes on the blog。它以一定的时间间隔异步更新,在这种情况下StreamBuilder 是最好的选择。

根据用例,您决定使用哪一个。他们俩都以自己的方式好。请遵循以下文章,以获得清晰:

StreamBuilder class FutureBuilder class

【讨论】:

以上是关于FutureBuilder 与 Streambuilder的主要内容,如果未能解决你的问题,请参考以下文章

FutureBuilder 与 Streambuilder

FutureBuilder 与 Notifylistener 冲突

6-3 异步:Future与FutureBuilder实用技巧

FlutterFutureBuilder 异步编程 ( FutureBuilder 构造方法 | AsyncSnapshot 异步计算 )

FutureBuilder 显示加载指示器,尽管结果已缓存

Flutter FutureBuilder 在另一个 FutureBuilder 中,取自 JSON 字符串数组