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

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

【问题讨论】:

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

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


【解决方案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;
}   

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

现在是最终答案

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

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

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

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 2021-07-19
    • 2021-07-14
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2021-10-23
    相关资源
    最近更新 更多