大家好,我想从 Cloud firestore 获取数据,但我不太确定哪个在 Flutter 中使用效率更高。我应该使用 streambuilder 还是 futurebuilder。我有很多帖子都是红色的,但我不太明白其中的区别。谁能告诉我是否应该使用 streambuilder 或 futurebuilder 从 firestore 获取数据
最佳答案
StreamBuilder
和 FutureBuilder
具有相同的行为:它们监听各自对象的变化。并在收到新值通知时触发新构建。
最终,区别在于他们如何收听异步调用
。
future build 者
它只有一个响应。 flutter Future
的一个非常常见的用法是在 http
调用期间。你可以用 Future
做的是听它的状态,也就是说,当它完成时或在通过 Future
流水线 build 者
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;
}
上面的代码每次都会运行,如果来自异步数据的值发生变化,即使您正在使用该应用程序,也会更新该值。它不会停止。并显示您放入特定案例中的数据。
现在是最终答案
如果上面的内容还没有让你明白,那么看看下面的数据:
- 如果您的用例只是获取数据并显示它,例如
API 类中的类(class)总数
。然后就可以使用FutureBuilder
了。 - 如果在您使用该应用程序时数据每秒或每分钟更新一次,例如
博客中即将发布的帖子
或增加博客上的评论
或博客上的点赞数增加
。它以一定的间隔异步更新,在这种情况下,StreamBuilder
是最佳选择。
根据用例,您决定使用哪一个。他们两个都以自己的方式很好。按照以下文章进行操作,以获得清晰度:
关于database - FutureBuilder 与 Streambuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62995229/