getQuery method

Query<Map<String, Object?>> getQuery(
  1. List<String> fields, {
  2. List<QueryFilter>? filters,
  3. DocumentSnapshot<Map<String, dynamic>>? startAfter,
  4. int? limit,
})

Implementation

Query<Map<String, Object?>> getQuery(List<String> fields,
    {List<QueryFilter>? filters, DocumentSnapshot<Map<String, dynamic>>? startAfter, int? limit}) {
  if (fields.contains(null)) throw FirestoreNullArgumentException();
  if (fields.length % 2 == 0) throw FirestoreArgumentException();
  Query<Map<String, Object?>> query = firestore.collection(fields.join('/'));
  if (filters != null) {
    for (var filter in filters)
      query = query.where(
        filter.field,
        isEqualTo: filter.isEqualTo,
        isLessThan: filter.isLessThan,
        isLessThanOrEqualTo: filter.isLessThanOrEqualTo,
        isGreaterThan: filter.isGreaterThan,
        isGreaterThanOrEqualTo: filter.isGreaterThanOrEqualTo,
        arrayContains: filter.arrayContains,
        arrayContainsAny: filter.arrayContainsAny,
        whereIn: filter.whereIn,
        isNull: filter.isNull,
      );
  }

  if (startAfter != null) query = query.startAfterDocument(startAfter);
  if (limit != null) query = query.limit(limit);

  return limitQuery(query, startAfter: startAfter, limit: limit);
}