FutureBuilder 与 Streambuilder
Posted
技术标签:
【中文标题】FutureBuilder 与 Streambuilder【英文标题】:FutureBuilder vs Streambuilder 【发布时间】:2020-11-09 16:41:16 【问题描述】:大家好,我想从 Cloud Firestore 中获取数据,但我不太确定在 Flutter 中使用哪个更有效。我应该使用流构建器还是未来构建器。我有很多帖子,但我不太了解其中的差异。谁能告诉我是否应该使用 streambuilder 或 futurebuilder 从 firestore 获取数据
【问题讨论】:
你能描述一下你没有得到什么吗?因为 SO 已经有很多答案了。 我不知道哪种方法可以有效地从 firestore 获取数据,因为我不想向 firestore 发出很多请求 【参考方案1】:StreamBuilder
和 FutureBuilder
具有相同的行为:它们监听各自对象的变化。并在收到新值通知时触发新构建。
最终,不同之处在于他们收听async calls
的方式。
未来建造者
它只有一个响应。颤振Future
的一个非常常见的用法是在http
调用期间。 Future
可以做的就是监听它的状态,也就是通过Future
获取数据后完成或者出错的时候
STREAMBUILDER
另一方面,Stream
是Iterators
,它可以同化不同的值,这些值会随着时间而改变。通过使用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 blog
或 increase comments on the blog
或 increase in likes on the blog
。它以一定的时间间隔异步更新,在这种情况下StreamBuilder
是最好的选择。
根据用例,您决定使用哪一个。他们俩都以自己的方式好。请遵循以下文章,以获得清晰:
StreamBuilder class FutureBuilder class【讨论】:
以上是关于FutureBuilder 与 Streambuilder的主要内容,如果未能解决你的问题,请参考以下文章
FutureBuilder 与 Notifylistener 冲突
6-3 异步:Future与FutureBuilder实用技巧
FlutterFutureBuilder 异步编程 ( FutureBuilder 构造方法 | AsyncSnapshot 异步计算 )