firebase - 来自Firestore的数据未显示在 ListView 中

标签 firebase flutter dart google-cloud-firestore

我在Firestore上有以下数据:
enter image description here
我正在使用以下代码从每个文档中获取“名称”,以显示在列表 View 中:

Widget buildUserList(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData) {
    return ListView.builder(
        itemCount: snapshot.data.documents.length,
        itemBuilder: (context, index) {
            DocumentSnapshot user = snapshot.data.documents[index];

            return ListTile(
                // Access the fields as defined in FireStore
                title: Text(user.data['name']),
            );
        },
    );
} else if (snapshot.connectionState == ConnectionState.done && !snapshot.hasData) {
    // Handle no data
    return Center(
        child: Text("No users found."),
    );
} else {
    // Still loading
    return CircularProgressIndicator();
}
}
并在体内展示:
StreamBuilder(
    stream:
        Firestore.instance.collection('markers').snapshots(),
    builder: buildUserList,
)
问题是列表 View 为空。我该怎么办才能解决这个问题?

最佳答案

好的,所以在运行您的代码时遇到了两个错误。第一个是ListView需要具有一定的高度,可以使用容器或大小框小部件轻松实现。下面的固定代码示例将包含一个容器来限制高度。另一个问题是ListTile窗口小部件需要在窗口小部件树中具有Material窗口小部件,并且您的窗口小部件树中可能已经有一个Material窗口小部件,而该位置只是您的问题中未包括的内容,但是如果没有,下面的代码示例也可以解决该问题。以及。希望有帮助!有任何问题请发表评论!

Widget buildUserList(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (snapshot.hasData) {
        return Container(
          height: 350,
          child: ListView.builder(
              itemCount: snapshot.data.documents.length,
              itemBuilder: (context, index) {
                  DocumentSnapshot user = snapshot.data.documents[index];

                  return Material(
                    child: ListTile(
                        // Access the fields as defined in FireStore
                        title: Text(user.data['first name']),
                    ),
                  );
              },
          ),
        );
    } else if (snapshot.connectionState == ConnectionState.done && !snapshot.hasData) {
        // Handle no data
        return Center(
            child: Text("No users found."),
        );
    } else {
        // Still loading
        return CircularProgressIndicator();
    }
  }

关于firebase - 来自Firestore的数据未显示在 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62704046/

相关文章:

android - 手动更改权限时崩溃

dart - 如何在 flutter 中调整 CircularProgressIndicator 的大小?

android - 在 android studio 3.3 org.gradle.execution.MultipleBuildFailures : Build completed with 1 failures 中构建应用程序时出错

ios - 将 Firebase 数据库添加到 iOS 部分时遇到问题

android - 是否可以在 Flutter 中创建自定义快速设置磁贴?

android - 是否可以通过使用int而不是string来减少Firebase实时数据库中的下载和/或存储大小?

flutter - 如何随机生成列表元素?

dart - 如何在 Dart 中将 double 转换为 int?

javascript - Firebase Js 如何将值数组存储到各自键的每一行中

javascript - Firebase存储和JavaScript,从存储下载文件