getDataFromQuery<T> function
Stream<List<T> >
getDataFromQuery<T>({
- required Query query,
- required DocumentMapper<
T> mapper, - List<
ItemFilter< ? clientSidefilters,T> > - ItemComparer<
T> ? orderComparer,
Convenience Method to access the data of a Query as a stream while applying
a mapping function on each document with optional client side filtering and sorting
qery
: the data source
mapper
: mapping function that gets applied to every document in the query.
Typically used to deserialize the Map returned from FireStore
clientSideFilters
: optional list of filter functions that execute a .where()
on the result on the client side
orderComparer
: optional comparisson function. If provided your resulting data
will be sorted based on it on the client
Implementation
Stream<List<T >> getDataFromQuery<T>({
required Query query,
required DocumentMapper<T > mapper,
List<ItemFilter<T>>? clientSidefilters,
ItemComparer<T>? orderComparer,
}) {
return query.snapshots().map((snapShot) {
Iterable<T> items = snapShot.docs.map(mapper).where((element) => element != null) as Iterable<T>;
if (clientSidefilters != null) {
for (var filter in clientSidefilters) {
items = items.where(filter);
}
}
var asList = items.toList();
if (orderComparer != null) {
asList.sort(orderComparer);
}
return asList;
});
}