render method
void
render()
Implementation
void render() {
// We assume that the first row gives us alignment directions that
// subsequent rows would follow.
List<AlignmentDirection> alignments = rows
.whereType<NormalRow>()
.first
.columns
.map((v) => v is Text ? v.direction : AlignmentDirection.left)
.toList();
List<int> widths =
List<int>.filled(rows.whereType<NormalRow>().first.columns.length, 0);
// Compute max width for each column in the table.
for (var row in rows.whereType<NormalRow>()) {
assert(row.columns.length == widths.length);
for (var i = 0; i < widths.length; i++) {
widths[i] = math.max(row.columns[i].length, widths[i]);
}
}
if (maxWidth > 0) {
for (var i = 0; i < widths.length; i++) {
widths[i] = math.min(widths[i], maxWidth);
}
}
for (var row in rows) {
print(row.render(widths, alignments));
}
}