当前位置: 首页 > 知识库问答 >
问题:

我可以使用StreamBuilder在Firestore中收听单个文档吗?

司徒胤
2023-03-14

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

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

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

有没有办法做到这一点?

共有2个答案

东门彬
2023-03-14

如果您想获取单个文档,请使用Future Builder而不是Stream Builder。

FutureBuilder<DocumentSnapshot>(
                                              future: Firestore.instance
                                                  .collection('users')
                                                  .document(widget.puid)
                                                  .get(),
                                              builder: (context,
                                                  AsyncSnapshot<
                                                          DocumentSnapshot>
                                                      snapshot) {
                                                if (snapshot.hasError)
                                                  return Center(
                                                    child: Text(snapshot
                                                        .hasError
                                                        .toString()),
                                                  );
                                                return snapshot.hasData
                                                    ? Text(
                                                        "${snapshot.data['username']}",
                                                        style: TextStyle(
                                                            color:
                                                                kPrimaryColor,
                                                            fontSize: 18,
                                                            fontWeight:
                                                                FontWeight
                                                                    .bold),
                                                      )
                                                    : Container();
                                              },
                                            ),
强宾白
2023-03-14

您只获取一次文档的原因是文档引用。get方法最初只返回一个未来,而使用asStream只会将一个未来返回到流。

然而,cloud\u firestore包有一个内置的方法来正确地侦听文档
您可以使用DocumentReference。相反,快照将返回该文档每次更改的流。

在代码中,只需替换。get()。asStream()创建。快照()

 类似资料:
  • 问题内容: 你好,我正在尝试在列表中使用分页。并且列表数据来自firebase。我不确定如何使用流构建器对数据进行分页。现在我通过在didChangeDependencies()函数中调用getdocuments来进行分页。但是添加新数据后,列表不会更新。如果有人可以提供帮助,那对我来说太好了。这是我现在正在做的.. 问题答案: 请尝试以下代码: 产品项的JSON: 链接Github示例: htt

  • 问题内容: 我想绑定以在按下时关闭活动的反应引导弹出窗口。这是代码 但是,当我按任意键时,控制台中都不会记录任何内容。我也尝试在窗口上以及不同情况下使用’keypress’,’keyup’等来收听,但似乎我做错了。 问题答案: 您应该使用而不是。 Keypress通常仅用于根据文档产生字符输出的键 按键 当按下某个键时会触发keypress事件,并且该键通常会产生一个字符值 按键 按下键时会触发k

  • 问题内容: 这是我遇到的一些困难。我有一个本地客户端脚本,该脚本需要允许用户获取远程网页并在结果页面中搜索表单。为了做到这一点(不使用正则表达式),我需要将文档解析为一个完全可遍历的DOM对象。 我想强调一些限制: 我不想使用库(如jQuery)。我在这里要做的事情太多了。 在任何情况下都不应执行远程页面中的脚本(出于安全原因)。 诸如的DOM API 必须可用。 它仅需要在Internet Ex

  • 我正在尝试编写一个存储过程,其中我使用2个表来获取基于条件的数据,但它给出了错误。 我的SP是: 错误: 以下查询失败:“CREATE DEFINER=@PROCEDURE(在DATETIME中,在INT中,在INT中,以及在INT中)不确定性包含SQL安全定义器,如果dateposteds

  • 验证后,我试图在/users/处查找用户文档,然后我想使用auth对象中的数据以及一些自定义用户属性更新文档。但我得到一个错误,更新方法不存在。有没有办法更新单个文档?所有firestore文档示例都假定您拥有实际的文档id,并且没有任何示例使用where子句进行查询。

  • 我正在为一个使用Cloud Firestore的项目规划我的DB的结构,目前我正在尝试找出存储数据并将其与用户关联的最佳方法。具体情况如下: 我在我的数据库的根部有一个用户文档的集合,我希望用户能够通过查看显示该用户的帖子的用户配置文件页面以及通过查看显示所有用户的帖子的页面来创建可以访问的帖子。 将用户的文章存储在用户文档的子集合中会使获取用户的文章用于其配置文件变得非常容易,但是是否可以编写一