render method

  1. @override
String render()
override

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();
}