database - FutureBuilder 与 Streambuilder

标签 database flutter dart google-cloud-firestore mobile-application

大家好,我想从 Cloud firestore 获取数据,但我不太确定哪个在 Flutter 中使用效率更高。我应该使用 streambuilder 还是 futurebuilder。我有很多帖子都是红色的,但我不太明白其中的区别。谁能告诉我是否应该使用 streambuilder 或 futurebuilder 从 firestore 获取数据

最佳答案

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

最终,区别在于他们如何收听异步调用

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;
}   

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

现在是最终答案

如果上面的内容还没有让你明白,那么看看下面的数据:

  1. 如果您的用例只是获取数据并显示它,例如 API 类中的类(class)总数。然后就可以使用FutureBuilder了。
  2. 如果在您使用该应用程序时数据每秒或每分钟更新一次,例如博客中即将发布的帖子增加博客上的评论博客上的点赞数增加。它以一定的间隔异步更新,在这种情况下,StreamBuilder 是最佳选择。

根据用例,您决定使用哪一个。他们两个都以自己的方式很好。按照以下文章进行操作,以获得清晰度:

关于database - FutureBuilder 与 Streambuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62995229/

相关文章:

flutter - 无法从 flutter 的 Assets 中读取sql文件

php - 需要开源网络数据库编辑器(phpMyAdmin + 语义)

mysql - 拆分字符串字段后添加行号

database - 如何命名 SQLite 数据库,使其没有默认名称 main?

ios - 如何在本地计算机或 AWS/第 3 方托管站点上托管 Realm 服务器?

dart - flutter 对齐按钮到抽屉底部

dart - 如何在 CupertinoTabView 中使用 Flutter Textfield 而不会在点击时引发异常?

dart - flutter : Bad state: Stream has already been listened to

dart - 去除前置摄像头的镜像效果

dart - 是否有直接调用命名重载运算符函数的语法