streamListFromTo method

Stream<List<T>> streamListFromTo(
  1. String field,
  2. DateTime from,
  3. DateTime to, {
  4. List<QueryArgsV2> args = const [],
})

Returns the list of documents from from date to to date matched by field from collection as a stream so that changes can be listened and is ordered by the field provided. additional args can be supplied to perform specific query.

Implementation

Stream<List<T>> streamListFromTo(String field, DateTime from, DateTime to,
    {List<QueryArgsV2> args = const []}) {
  var ref = _db.collection(collection).orderBy(field, descending: true);
  for (final arg in args) {
    ref = ref.where(
      arg.key,
      isEqualTo: arg.isEqualTo,
      isNotEqualTo: arg.isNotEqualTo,
      isGreaterThan: arg.isGreaterThan,
      isGreaterThanOrEqualTo: arg.isGreaterThanOrEqualTo,
      isLessThan: arg.isLessThan,
      isLessThanOrEqualTo: arg.isLessThanOrEqualTo,
      isNull: arg.isNull,
      arrayContains: arg.arrayContains,
      arrayContainsAny: arg.arrayContainsAny,
      whereIn: arg.whereIn,
      whereNotIn: arg.whereNotIn,
    );
  }
  var query = ref.startAfter([to]).endAt([from]).snapshots();
  return query.map(
      (snap) => snap.docs.map((doc) => fromDS(doc.id, doc.data())).toList());
}