collectStreamPaged<R, T> function
Like collectStream but also returns whether more pages are available.
Implementation
Future<PagedResult<T>> collectStreamPaged<R, T>(
Stream<R> stream, {
required List<T> Function(R response) extract,
int maxPages = 10,
}) async {
final results = <T>[];
var pages = 0;
var hitPageCap = false;
await for (final response in stream) {
final items = extract(response);
results.addAll(items);
pages++;
if (items.isEmpty) break;
if (pages >= maxPages) {
hitPageCap = true;
break;
}
}
return PagedResult(items: results, hasMore: hitPageCap);
}