rowsOf<T> method
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,
);
}
}