我在Firestore上有以下数据:
我正在使用以下代码从每个文档中获取“名称”,以显示在列表 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/