printfTable function

void printfTable(
  1. Map<String, Object?> rows, {
  2. String? title,
  3. PrintfLevel level = PrintfLevel.debug,
  4. String? tag,
})

Prints key/value rows in a aligned block.

Implementation

void printfTable(
  Map<String, Object?> rows, {
  String? title,
  PrintfLevel level = PrintfLevel.debug,
  String? tag,
}) {
  if (rows.isEmpty) {
    printf('(empty table)', tag: tag, level: level);
    return;
  }
  final width = rows.keys.map((k) => k.length).reduce((a, b) => a > b ? a : b);
  final buffer = StringBuffer();
  if (title != null && title.isNotEmpty) {
    buffer.writeln(printfSeparator(object: title, length: 10));
  }
  rows.forEach((key, value) {
    buffer.writeln('${key.padRight(width)} : $value');
  });
  printf(buffer.toString().trimRight(),
      tag: tag, level: level, timestamp: true);
}