calculateColumnWidths<T, K> static method
Map<int, TableColumnWidth>
calculateColumnWidths<T, K>(
- List<
TTableHeader< headers,T, K> > - bool selectable,
- bool expandable, {
- int maxTreeLevel = 0,
Calculates column widths based on headers and available options.
Implementation
static Map<int, TableColumnWidth> calculateColumnWidths<T, K>(
List<TTableHeader<T, K>> headers,
bool selectable,
bool expandable, {
int maxTreeLevel = 0,
}) {
Map<int, TableColumnWidth> columnWidths = {};
int columnIndex = 0;
if (selectable) {
columnWidths[columnIndex] = const FixedColumnWidth(50);
columnIndex++;
}
if (expandable) {
columnWidths[columnIndex] = const FixedColumnWidth(50);
columnIndex++;
}
final treeIndentBonus = maxTreeLevel > 0 ? (maxTreeLevel * 16.0 + 48.0) : 0.0;
for (int i = 0; i < headers.length; i++) {
final header = headers[i];
final extraWidth = (i == 0) ? treeIndentBonus : 0.0;
if (header.maxWidth != null && header.maxWidth != double.infinity) {
columnWidths[columnIndex] = FixedColumnWidth(header.maxWidth! + extraWidth);
} else if (header.minWidth != null && header.minWidth! > 0) {
columnWidths[columnIndex] = FixedColumnWidth(header.minWidth! + extraWidth);
} else {
columnWidths[columnIndex] = FlexColumnWidth(header.flex?.toDouble() ?? 1.0);
}
columnIndex++;
}
return columnWidths;
}