首页 > 解决方案 > 无法从 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();
  }),

我得到的控制台输出如下

在此处输入图像描述

标签: firebaseflutterfirebase-realtime-database

解决方案


您正在查询MyLibrary,这意味着结果中的节点是 的直接子节点MyLibrary。相反,您想要的是为 psecific 用户获取书籍节点。在这种情况下,不要使用查询,而是直接查找该用户的书籍:

final dbRef = ref.child("MyLibrary").child(uid);

推荐阅读