大家好,我想从云Firestore中获取数据,但是我不确定在Flutter中使用哪种方法更有效。我应该使用StreamBuilder还是FutureBuilder呢?我已经阅读了许多帖子,但我并没有完全理解它们的区别。请问有人能告诉我,在从Firestore获取数据时,我应该使用StreamBuilder还是FutureBuilder?
大家好,我想从云Firestore中获取数据,但是我不确定在Flutter中使用哪种方法更有效。我应该使用StreamBuilder还是FutureBuilder呢?我已经阅读了许多帖子,但我并没有完全理解它们的区别。请问有人能告诉我,在从Firestore获取数据时,我应该使用StreamBuilder还是FutureBuilder?
StreamBuilder
和 FutureBuilder
的行为相同:它们监听相应对象的变化,并在收到新值通知时触发新构建。
最终,它们在监听 async
调用的方式上有所不同。
FUTUREBUILDER
它只有一个响应。Flutter 中使用 Future
最常见的用途是在 http
调用期间。你可以监听 Future
的状态,即当它完成或在通过 Future
获取数据后出现错误时。
STREAMBUILDER
Stream
是迭代器,可以吸收不同的值,并且这些值会随时间而改变。通过使用 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获取班级中的课程总数
,那么您可以使用FutureBuilder
。博客中即将发布的帖子
、博客上的评论增加
或博客上的赞数增加
。它以异步方式在某些时间间隔内更新,这种情况下,StreamBuilder
是最好的选择。根据用例,您决定使用哪个。它们各有优点。请参阅以下文章以获得更清晰的说明: