firebase - 无法从 Firebase 实时数据库中读取子列表
问题描述
我想在我的颤振应用程序中显示集合中的项目列表。但无法完成。
这是我的代码。不知道我在哪里做错了。
FutureBuilder(
future: dbRef.once(),
builder: (context, AsyncSnapshot<DataSnapshot> snapshot) {
if (snapshot.hasData) {
lists.clear();
Map<dynamic, dynamic> values = snapshot.data.value;
if (values != null) {
print(values);
values.forEach((key, values) {
lists.add(values);
});
return ListView.builder(
shrinkWrap: true,
itemCount: lists.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: Icon(Icons.book_online),
trailing: Icon(Icons.arrow_right),
title: Text(
lists[index]["Name"],
style: TextStyle(fontWeight: FontWeight.bold),
),
contentPadding: EdgeInsets.symmetric(
vertical: 0.0, horizontal: 16.0),
dense: true,
onTap: () {
Navigator.of(context).pushNamed('/Book',
arguments: {"id": lists[index]["ID"]});
},
);
});
} else {
return Padding(
padding: const EdgeInsets.all(28.0),
child: Center(
child: Text(
'No books found in your Library',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20.0,
),
),
),
);
}
}
return CircularProgressIndicator();
}),
我得到的控制台输出如下
解决方案
您正在查询MyLibrary
,这意味着结果中的节点是 的直接子节点MyLibrary
。相反,您想要的是为 psecific 用户获取书籍节点。在这种情况下,不要使用查询,而是直接查找该用户的书籍:
final dbRef = ref.child("MyLibrary").child(uid);
推荐阅读
- google-apps-script - 如何为无法编辑的用户删除 googlesheet 上的范围保护?
- perl - 按顺序循环遍历哈希成员
- tensorflow - 带有 tensorflow 2 的 Sagemaker 不保存模型
- python - python sqlite3条件查询
- python - 使用重复索引重塑 Pandas 数据框并填充缺失的行
- c# - 如何在 IBM MQ .on Net Core 平台上使用 Backout 和 Commit
- python - Python 中的聚类:由于使用矩阵与数据框导致的结果差异?为什么会发生这种情况?
- spring-boot - 上传到 Google Cloud Platform 时无法读取 CSV 文件
- windows - 如何在 CMake for windows 中将多个静态库捆绑到单个库中
- apache-spark - 比较 pyspark 中的两个数据集