calculateColumnWidths<T> static method

Map<int, TableColumnWidth> calculateColumnWidths<T>(
  1. List<TTableHeader<T>> headers,
  2. bool selectable,
  3. bool expandable
)

Implementation

static Map<int, TableColumnWidth> calculateColumnWidths<T>(List<TTableHeader<T>> headers, bool selectable, bool expandable) {
  Map<int, TableColumnWidth> columnWidths = {};
  int columnIndex = 0;

  if (selectable) {
    columnWidths[columnIndex] = const FixedColumnWidth(40);
    columnIndex++;
  }

  if (expandable) {
    columnWidths[columnIndex] = const FixedColumnWidth(40);
    columnIndex++;
  }

  for (int i = 0; i < headers.length; i++) {
    final header = headers[i];

    if (header.maxWidth != null && header.maxWidth != double.infinity) {
      columnWidths[columnIndex] = FixedColumnWidth(header.maxWidth!);
    } else if (header.minWidth != null && header.minWidth! > 0) {
      columnWidths[columnIndex] = FixedColumnWidth(header.minWidth!);
    } else {
      columnWidths[columnIndex] = FlexColumnWidth(header.flex?.toDouble() ?? 1.0);
    }
    columnIndex++;
  }

  return columnWidths;
}