performLayout method
Hook for subclasses to perform layout within the given constraints.
Implementation
@override
Size performLayout(BoxConstraints constraints) {
final table = widget as Table;
final width = constraints.hasBoundedWidth ? constraints.maxWidth : 80;
final height = constraints.hasBoundedHeight
? constraints.maxHeight
: (table.rows.length + 2);
final usableHeight = height - 2;
table.adjustScroll(usableHeight);
// Calculate column widths
resolvedColumnWidths = List<int>.generate(table.headers.length, (c) {
return c < table.columnWidths.length ? table.columnWidths[c] : 10;
});
// Compute cell offsets
columnXOffsets = [];
int startX = 0;
for (var c = 0; c < table.headers.length; c++) {
columnXOffsets.add(startX);
startX += resolvedColumnWidths[c] + 1;
}
totalContentWidth = startX > 0 ? startX - 1 : 0;
// Layout child elements
for (var r = 0; r < table.rows.length; r++) {
for (var c = 0; c < table.headers.length; c++) {
final cellEl = cellElements[r][c];
if (cellEl != null) {
final colWidth = resolvedColumnWidths[c];
cellEl.layout(BoxConstraints.tight(Size(colWidth, 1)));
}
}
}
return constraints.constrain(Size(width, height));
}