rowsOf<T> method

Iterable<GridRow<T>> rowsOf<T>(
  1. List<T> items
)

Iterates over rows, providing items for each row.

Useful for rendering:

for (final row in grid.rowsOf(items)) {
  for (final (index, item) in row.items.indexed) {
    final absoluteIndex = row.startIndex + index;
    // render item
  }
}

Implementation

Iterable<GridRow<T>> rowsOf<T>(List<T> items) sync* {
  final totalRows = rows;
  for (var r = 0; r < totalRows; r++) {
    final startIdx = r * _columns;
    final endIdx = min(startIdx + _columns, _itemCount);
    final rowItems = items.sublist(
      startIdx.clamp(0, items.length),
      endIdx.clamp(0, items.length),
    );
    yield GridRow<T>(
      row: r,
      startIndex: startIdx,
      items: rowItems,
      isLastRow: r == totalRows - 1,
    );
  }
}