基于example in FlutterFire documentation:
class UserInformation extends StatelessWidget {
final String cxurrentUid;
const UserInformation({Key key, this.currentUid}) : super(key: key);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('users');
Query query = users.where('age', isGreaterThan: 20);
return StreamBuilder<QuerySnapshot>(
stream: query.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return new ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) => document.data())
.where((data) => data['uid'] != currentUid)
.map((data) => ListTile(
title: new Text(document.data()['full_name']),
subtitle: new Text(document.data()['company']),
);
).toList(),
);
},
);
}
}
您不再使用List<DocumentSnapshot>,而不是Query。
您必须转换您的isNotEqualTo、isEqualTo、isGreaterThanOrEqualTo 和whereNotIn:
isNotEqualTo ⇒ where((data) => data[age] != 42
isEqualTo ⇒ where((data) => data[age] == 42
isGreaterThanOrEqualTo ⇒ where((data) => data[age] >= 42
whereNotIn ⇒ where((data) => [42, 67, 239].conatins(data[age])
我还建议使用适当的类模型将您的 Firestore 文档转换为域实体。