GridNavigator.balanced constructor
GridNavigator.balanced({})
Creates a balanced grid (roughly square).
Calculates columns to create a balanced grid, optionally constrained by available width and max columns.
Implementation
factory GridNavigator.balanced({
required int itemCount,
int? cellWidth,
int? availableWidth,
int? maxColumns,
int initialIndex = 0,
}) {
// Aim for roughly sqrt(itemCount) columns
var cols = max(1, sqrt(itemCount).ceil());
// Constrain by available width if provided
if (cellWidth != null && availableWidth != null) {
final maxByWidth = max(1, (availableWidth - 2) ~/ (cellWidth + 1));
cols = min(cols, maxByWidth);
}
// Apply optional cap
if (maxColumns != null && maxColumns > 0) {
cols = min(cols, maxColumns);
}
// Cap to item count
cols = min(cols, max(1, itemCount));
return GridNavigator(
itemCount: itemCount,
columns: cols,
initialIndex: initialIndex,
);
}