单Flutter Web实例下,多监听静态Firestore Stream的读取量计算
Firestore读取次数分析
在你描述的场景下,Firestore的初始读取次数是30次,后续每次数据更新也会产生30次读取,具体原因如下:
- 你的
readJobs()静态方法每次被调用时,都会创建一个全新的Firestore查询流:FirebaseFirestore.instance.collection('jobs').where(...).snapshots()。这意味着三个Widget各自调用readJobs()时,会生成三个独立的Firestore监听,而非共享同一个监听实例。 - Firestore对每个独立监听的初始快照,会按匹配的文档数量计费——这里每个监听匹配10个文档,三个监听就是
3 × 10 = 30次读取。 - 每当目标集合中符合查询条件的文档发生变化时,每个独立监听都会再次获取完整的快照,同样每次更新会产生30次读取。
如果想优化为只产生10次初始读取(后续更新也仅10次),需要确保三个Widget共享同一个Stream实例,比如将readJobs()返回的流缓存起来,让所有Widget监听同一个流对象,而不是每次调用都创建新的查询流。
内容的提问来源于stack exchange,提问作者pbs
相关产品推荐
相关产品推荐

