如何在FlutterFire中使用.where()来执行Firestore的查询?因为文档和示例没有涵盖这一点我很困惑。我在这里没有找到其他问题所以我希望我不要求重复。
答案 0 :(得分:22)
下面的示例遍历集合“fields”中的每个文档,并过滤“grower”。没有相关文档,但您可以查看源代码。
import 'package:cloud_firestore/cloud_firestore.dart';
Firestore.instance.collection('fields').where('grower', isEqualTo: 1)
.snapshots().listen(
(data) => print('grower ${data.documents[0]['name']}')
);
来自源代码:
Query where(
String field, {
dynamic isEqualTo,
dynamic isLessThan,
dynamic isLessThanOrEqualTo,
dynamic isGreaterThan,
dynamic isGreaterThanOrEqualTo,
bool isNull,
}) {..}
答案 1 :(得分:0)
这个,如果你使用流构建器
StreamBuilder<QuerySnapshot>(
stream: feed.where('uid', isEqualTo: 'aaaaaaaaaaaaa').snapshots(),
builder: (_, snapshot) {
if (snapshot.hasData) {
return Column(
children: snapshot.data.docs
.map((e) => itemGrid(
e.data()['username'],
e.data()['uid'],
e.data()['uavatarUrl'],
e.data()['imageUrl'],
e.data()['desc'],
))
.toList(),
);
} else {
print('null');
return Container();
}
}));
答案 2 :(得分:0)
由于许多类现在已被弃用或完全删除,请将此代码用于 Flutter 2.0 及更高版本。
QuerySnapshot<Map<String, dynamic>> snapshot = await FirebaseFirestore.instance
.collection('employees')
.limit(10)
.where('age', isGreaterThan: 30)
.get();
List<QueryDocumentSnapshot> docs = snapshot.docs;
for (var doc in docs) {
if (doc.data() != null) {
var data = doc.data() as Map<String, dynamic>;
var name = data['name']; // You can get other data in this manner.
}
}