windowed method

List<List<T>> windowed(
  1. int size, {
  2. int step = 1,
})

Returns a sliding window of size over the list.

[1,2,3,4].windowed(2) // [[1,2],[2,3],[3,4]]

Implementation

List<List<T>> windowed(int size, {int step = 1}) {
  assert(size > 0 && step > 0);
  final result = <List<T>>[];
  for (var i = 0; i + size <= length; i += step) {
    result.add(sublist(i, i + size));
  }
  return result;
}