bufferCount method
Converts the parent items into IList
's of the given size.
Implementation
OffsetIterator<IList<T>> bufferCount(
int count, {
String name = 'bufferCount',
SeedCallback<T>? seed,
int retention = 0,
bool? cancelOnError,
bool bubbleCancellation = true,
}) {
final parent = this;
return OffsetIterator(
name: toStringWithChild(name),
process: (_) async {
final buffer = <T>[];
var remaining = count;
final onItem = O.tap<T>((item) {
buffer.add(item);
remaining--;
});
while (remaining > 0) {
final futureOr = parent.pull();
final item = futureOr is Future ? await futureOr : futureOr;
onItem(item);
if (parent.drained) break;
}
return OffsetIteratorState(
chunk: [buffer.toIList()],
hasMore: parent.hasMore(),
);
},
cleanup: parent.generateCleanup(bubbleCancellation: bubbleCancellation),
cancelOnError: cancelOnError ?? parent.cancelOnError,
);
}