FutureBuilder与Streambuilder

时间:2020-07-20 12:18:01

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

大家好,我想从Cloud Firestore提取数据,但是我不太确定哪种方法在flutter中更有效。我应该使用streambuilder还是futurebuilder。我有很多帖子,但我不太了解这些区别。有人可以告诉我是否应该使用streambuilder或futurebuilder从Firestore获取数据

1 个答案:

答案 0 :(得分:2)

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

最终,区别在于他们收听async calls的方式。

FUTUREBUILDER

它只有一个回应。抖动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是最佳选择。

根据用例,决定要使用哪个。他们两个都有自己的方式。请按照以下文章进行说明: