Dart split iterable into fixed size batches
Dart
Iterable<List<T>> chunked<T>(Iterable<T> items, int size) sync* {
if (size <= 0) throw ArgumentError.value(size, 'size', 'must be > 0');
var buffer = <T>[];
for (final item in items) {
buffer.add(item);
if (buffer.length == size) {
yield buffer;
buffer = <T>[];
}
}
if (buffer.isNotEmpty) yield buffer;
}
void main() {
print(chunked([1, 2, 3, 4, 5], 2).toList()); // [[1, 2], [3, 4], [5]]
}