How can I use the .where() in FlutterFire to perform queries for Firestore? Because the docs and example doesn't cover this I'm confused. I haven't found other questions on this here so I hope I'm not asking duplicate.


Example below go through every document in the collection 'fields', and filter on 'grower`. There is no documentation on that, but you may check the source code.

import 'package:cloud_firestore/cloud_firestore.dart';

Firestore.instance.collection('fields').where('grower', isEqualTo: 1)
    .snapshots().listen(
          (data) => print('grower ${data.documents[0]['name']}')
    );

From source code:

  Query where(
    String field, {
    dynamic isEqualTo,
    dynamic isLessThan,
    dynamic isLessThanOrEqualTo,
    dynamic isGreaterThan,
    dynamic isGreaterThanOrEqualTo,
    bool isNull,
  }) {..}

Update (Null safety code)

Since lot of classes are now either deprecated or completely removed, use this code for Flutter 2.0 and above.

final querySnapshot = await FirebaseFirestore.instance
    .collection('employees')
    .limit(10)
    .where('age', isGreaterThan: 30)
    .get();

for (var doc in querySnapshot.docs) {
  // Getting data directly
  String name = doc.get('name');
  
  // Getting data from map
  Map<String, dynamic> data = doc.data();
  int age = data['age'];
}