Firestore的限制为whereIn查询只能包含最多10个元素,因此在查询集合时可能出现问题。一个可行的解决方法是使用StreamBuilder替代FeatureBuilder作为获取查询数据的方式。使用StreamBuilder可以异步获取Firestore查询的结果,并在每次更新Firestore时自动更新页面显示。以下是使用StreamBuilder的示例代码:
StreamBuilder(
stream: FirebaseFirestore.instance.collection('myCollection')
.where('myField', whereIn: ['value1','value2','value3'])
.snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return CircularProgressIndicator();
default:
return ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
return ListTile(
title: Text(document['title']),
subtitle: Text(document['subtitle']),
);
}).toList(),
);
}
},
)