sliding method
Implementation
Stream<List<T>> sliding(int windowSize) async* {
final window = <T>[];
await for (final item in this) {
window.add(item);
if (window.length > windowSize) window.removeAt(0);
yield List.unmodifiable(window);
}
}