Firebase 使用flatter从firestore检索数据,其中每个文档具有不同数量的字段

Firebase 使用flatter从firestore检索数据,其中每个文档具有不同数量的字段,firebase,flutter,firebase-realtime-database,google-cloud-firestore,Firebase,Flutter,Firebase Realtime Database,Google Cloud Firestore,我正在使用Flutter(我是一个Flutter新手,所以如果这是一个愚蠢的问题,请原谅)构建一个应用程序,我的应用程序的一个基本功能是待办事项列表。问题是,这个应用程序既有老年人界面,也有看护人界面,因此,每个任务都由看护人分配并存储到firebase,老年人只需看到任务即可。因此,我这样做的方式是,每个管理员的userid是文档的docid,其中存储了所有针对老年人的任务。问题是每个文档都有不同数量的字段,而字段名实际上并不重要。例如,那天我可能只给妈妈2个任务,而其他人可能给他们的爸爸6个

我正在使用Flutter(我是一个Flutter新手,所以如果这是一个愚蠢的问题,请原谅)构建一个应用程序,我的应用程序的一个基本功能是待办事项列表。问题是,这个应用程序既有老年人界面,也有看护人界面,因此,每个任务都由看护人分配并存储到firebase,老年人只需看到任务即可。因此,我这样做的方式是,每个管理员的userid是文档的docid,其中存储了所有针对老年人的任务。问题是每个文档都有不同数量的字段,而字段名实际上并不重要。例如,那天我可能只给妈妈2个任务,而其他人可能给他们的爸爸6个任务。我正在使用streambuilder,但我需要一种方法,一旦找到文档(使用Uid),我就可以检索所有字段,并使每个字段成为复选框。我不能硬编码和输入

return ListView(
                  children: snapshot.data.docs.map((document) {
                    return Center(
                      child: Container(
                          height: MediaQuery.of(context).size.height / 6,
                          width: MediaQuery.of(context).size.width / 1.2,
                          child: Text(document['task1'])),
                    );
                  }).toList(),
                );
因为即使字段名是已知的,字段的数量也是未知的。上面的行适用于包含1个任务的待办事项列表,但仅此而已。 另外,我可以找出复选框部分,为了简单起见,我只是返回一个文本小部件。 先谢谢你。
由于
文档
映射
对象,因此可以使用
映射
类的属性。它获取
映射中的每个键值对

您可以将代码更新为:

                return ListView(
                  children: snapshot.data.docs.map((document) {
                    return Center(
                      child: Column(
                        children: document.data().entries
                         .map((mapEntry) => Container(
                           height: MediaQuery.of(context).size.height / 6,
                           width: MediaQuery.of(context).size.width / 1.2,
                           child: Text(mapEntry.value)))
                         .toList(),
                    ));
                  }).toList(),
                );
这将遍历
文档中的键值对
,将每个值映射到文本小部件中,然后将它们放在
列表中

然后将此列表传递到

条目关键字显示为错误


我移动了.map((mapEntry)…顶部有条目,但没有修复,它只是自动格式化回这个状态。

您好,可以安全地假设您的所有文档都命名为
task1
task2
task3
等。另外,请发布您的数据库结构。完成!请查看身份验证数据库和两个示例用户文档。您能签出我发布的答案吗o看看这是否适用于您?我收到一个错误,没有为QueryDocumentSnapshot和toList()类型定义“条目”没有为“Container”类型定义,我按原样粘贴了您的代码,但这是delimeter错误。请查看下图。现在查看。我已经编辑了代码。这应该可以修复错误。entries关键字显示为错误,您能看到问题是什么吗。很抱歉,我是一个新手,所以我还不能找出那么多错误。我更新了我的回答显示了错误的图片。您好,我已将document.data.entries更改为document.data().entries。这应该可以修复错误。