在实现ListView.builder()时,这段代码有问题吗



为什么ListView.builder只显示2个数据,我在cloud_firestore中有这么多文档,我想检索这些数据并将其显示在ListView中,但实际情况是,无论有多少文档,它都会返回所有文档,但当我使用ListView.bbuilder使用小部件显示数据时,它只显示了2个小部件。

Future<List<DocumentSnapshot>> getData() async {
var firestore = Firestore.instance;
QuerySnapshot qn =
await firestore.collection("LiveProducts").getDocuments();
return qn.documents;

}

Widget build(BuildContext context) {
return Container(
child: FutureBuilder(
future: getData(),
builder: (_, AsyncSnapshot<List<DocumentSnapshot>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Padding(
padding: const EdgeInsets.only(
top: 295,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Center(
child: SpinKitCircle(
color: Color.fromRGBO(91, 74, 127,10),
size: 50.0,
),
),
],
),
);
} else {
return ListView.builder(
// title: Text(snapshot.data[index].data["ProductName"]),
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (_, index) {
// if (snapshot.data[index].data["live"] == true) {
print(snapshot.data.length);
return Container(
margin: EdgeInsets.all(15),
height: 300,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.green,
),
child: Center(child: Text('$index'),),
);
// }
},
);
}
}));

}

一件可怕的事情是,我使用的是文本小部件而不是容器小部件,它完美地显示了所有的文档。像这个

return Center(child:Text(snapshot.data[index].data["ProductName"])),

尝试以下操作:

else if(snapshot.connectionState == ConnectionState.done)  {
return ListView.builder(
// title: Text(snapshot.data[index].data["ProductName"]),
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (_, index) {
// if (snapshot.data[index].data["live"] == true) {
print(snapshot.data.length);
return Container(
margin: EdgeInsets.all(15),
height: 300,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.green,
),
child: Center(child: Text('$index'),),
);
// }
},
);
}

完成→const ConnectionState

连接到已终止的异步计算。

最新更新