chunked method

Iterable<List<T>> chunked(
  1. int size
)

Splits this iterable into chunks of size.

The last chunk may have fewer elements than size.

[1, 2, 3, 4, 5].chunked(2);  // [[1, 2], [3, 4], [5]]

Implementation

Iterable<List<T>> chunked(int size) sync* {
  if (size <= 0) throw ArgumentError.value(size, 'size', 'must be positive');
  final iterator = this.iterator;
  while (iterator.moveNext()) {
    final chunk = <T>[iterator.current];
    for (var i = 1; i < size && iterator.moveNext(); i++) {
      chunk.add(iterator.current);
    }
    yield chunk;
  }
}