You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何将获取Firestore集合文档ID的Future改为Stream返回

改造后的实现代码

Stream<List<String>> getFollowingUidList(String uid) {
  return FirebaseFirestore.instance
      .collection('following')
      .doc(uid)
      .collection('user_following')
      .snapshots()
      .map((querySnapshot) {
        return querySnapshot.docs.map((snapshot) => snapshot.id).toList();
      });
}

改动说明

  • 移除了原方法的async关键字,无需再await单次请求结果,直接返回Stream对象即可
  • 将原单次拉取数据的get()方法替换为snapshots()方法,该方法会自动监听对应集合的变更(新增/删除/修改关注用户),实时推送最新的快照数据
  • 通过Stream的map方法对每次推送的QuerySnapshot做转换,转换逻辑和原有逻辑完全一致,仅提取所有文档的ID组成列表返回

使用说明

你可以直接配合StreamBuilder组件监听该流实现UI自动更新,也可以手动调用listen方法监听数据变更。和原有Future方法的单次查询逻辑不同,该Stream会持续推送最新的关注列表,直到你主动取消监听为止。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:05