GridNavigator.responsive constructor

GridNavigator.responsive({
  1. required int itemCount,
  2. required int cellWidth,
  3. required int availableWidth,
  4. int? maxColumns,
  5. int initialIndex = 0,
  6. int separatorWidth = 1,
  7. int prefixWidth = 2,
})

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