render method
Renders the component as a string.
Implementation
@override
String render() {
if (data.isEmpty) return '';
final headers = data.keys.toList();
final values = data.values.map((v) => v?.toString() ?? '').toList();
final maxHeaderWidth = headers
.map((h) => Style.visibleLength(h))
.fold<int>(0, (m, v) => v > m ? v : m);
final buffer = StringBuffer();
final pad = ' ' * padding;
final keyStyle = renderConfig.configureStyle(
Style().foreground(Colors.info),
);
for (var i = 0; i < headers.length; i++) {
final header = headers[i];
final value = values[i];
final headerPadding = maxHeaderWidth - Style.visibleLength(header);
if (i > 0) buffer.writeln();
buffer.write(
'$pad${keyStyle.render(header)}${' ' * headerPadding}$pad$separator$pad$value',
);
}
return buffer.toString();
}