firebase - 来自 Firestore 的数据未显示在列表视图中
问题描述
我正在使用此代码从每个文档中获取“名称”以显示在列表视图中:
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,
)
问题是列表视图是空的。我能做些什么来解决这个问题?
解决方案
好的,当我运行您的代码时,我遇到了两个错误。第一个是 ListView 需要有一个有界的高度,这可以通过容器或大小的框小部件轻松完成。下面的固定代码示例将有一个容器来限制高度。另一个问题是 ListTile 小部件需要在小部件树中具有 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();
}
}
推荐阅读
- python - Python:while循环不会停止
- java - 关于protobufs的困惑
- clojure - lein uberjar 导致“方法代码太大!”
- php - PHP:如何回显一行 if..else 语句(数组、SQL)?
- system.reactive - 如何在 Observable 链中重用对象实例?
- python - 在pygame中找到精灵的位置
- java - java swing中的绝对定位图像图标
- arrays - 如何遍历 JSON 数组
- reactjs - 如何在没有 redux 的情况下在 React App 中保存和更改大对象?
- php - While 语句不显示 ECHO