chunked method

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

Splits the iterable into chunks of size. The last chunk may be smaller.

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

Implementation

Iterable<List<T>> chunked(int size) sync* {
  assert(size > 0, 'Chunk size must be > 0');
  var chunk = <T>[];
  for (final e in this) {
    chunk.add(e);
    if (chunk.length == size) {
      yield chunk;
      chunk = [];
    }
  }
  if (chunk.isNotEmpty) yield chunk;
}