GridNavigator.responsive constructor
GridNavigator.responsive({})
Creates a grid navigation with responsive column calculation.
Calculates columns based on available width and cell width.
Optionally caps columns with maxColumns.
Implementation
factory GridNavigator.responsive({
required int itemCount,
required int cellWidth,
required int availableWidth,
int? maxColumns,
int initialIndex = 0,
int separatorWidth = 1,
int prefixWidth = 2,
}) {
final effectiveWidth = availableWidth - prefixWidth;
final unit = cellWidth + separatorWidth;
var cols = max(1, (effectiveWidth + separatorWidth) ~/ unit);
// Apply optional cap
if (maxColumns != null && maxColumns > 0) {
cols = min(cols, maxColumns);
}
// Also cap to item count (no point having more columns than items)
cols = min(cols, max(1, itemCount));
return GridNavigator(
itemCount: itemCount,
columns: cols,
initialIndex: initialIndex,
);
}