首页 > 解决方案 > 我可以使用 StreamBuilder 在 Firestore 中收听单个文档吗?

问题描述

我正在尝试收听集合的单个文档中的更改,但无法使其正常工作。

Widget build(BuildContext context) {
  return StreamBuilder(
    stream: Firestore.instance.collection("events").document(widget.documentID).get().asStream(),
    ...
  }
}

我正在使用.asStream()方法,但我只获取一次文档。如果我在 Firebase 控制台中更改数据,除非我重新打开视图,否则不会有任何更新。

有没有办法做到这一点?

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


您只获取一次文档的原因是因为该DocumentReference.get方法最初只返回 a并且FutureusingasStream只会将该一个返回到. FutureStream

但是,该cloud_firestore软件包具有正确收听文档的内置方法。
您可以改用DocumentReference.snapshots它,它会返回Stream该文档的每次更改。

在您的代码中,您只需替换.get().asStream().snapshots().


推荐阅读