calculateRowsAndColumns function

List<int> calculateRowsAndColumns(
  1. CalculateRowsAndColumnsOptions options
)

Calculates the number of rows and columns needed to display a given number of items in a grid.

Parameters:

  • options (CalculateRowsAndColumnsOptions): Options containing the number of items to display.

Returns:

  • A List<int> containing the calculated number of rows and columns.

Example:

final options = CalculateRowsAndColumnsOptions(n: 10);
final result = calculateRowsAndColumns(options);
print('Rows: ${result[0]}, Columns: ${result[1]}'); // Outputs: Rows: 4, Columns: 3

Implementation

List<int> calculateRowsAndColumns(CalculateRowsAndColumnsOptions options) {
  // Calculate the square root of n
  final double sqrtVal = sqrt(options.n);

  // Initialize columns based on the floor of the square root
  int cols = sqrtVal.floor();

  // Calculate the number of rows needed to display n items
  int rows = (options.n / cols).ceil();

  // Calculate the product of rows and columns
  int prod = rows * cols;

  // Adjust rows and columns until the product is greater than or equal to n
  while (prod < options.n) {
    if (cols < rows) {
      cols++;
    } else {
      rows++;
    }
    prod = rows * cols;
  }

  // Return a list with the calculated number of rows and columns
  return [rows, cols];
}