table static method

void table(
  1. List<Map<String, dynamic>> data, {
  2. String tag = 'Reactiv',
})

Log a table (list of maps)

Implementation

static void table(
  List<Map<String, dynamic>> data, {
  String tag = 'Reactiv',
}) {
  if (!config.enabled || data.isEmpty) return;

  final keys = data.first.keys.toList();
  final columnWidths = <String, int>{};

  // Calculate column widths
  for (final key in keys) {
    columnWidths[key] = key.length;
    for (final row in data) {
      final value = row[key]?.toString() ?? '';
      if (value.length > columnWidths[key]!) {
        columnWidths[key] = value.length;
      }
    }
  }

  // Print header
  final header = keys.map((k) => k.padRight(columnWidths[k]!)).join(' │ ');
  final separator = columnWidths.values.map((w) => '─' * w).join('─┼─');

  _log(LogLevel.info, '┌─$separator─┐', tag: tag);
  _log(LogLevel.info, '│ $header │', tag: tag);
  _log(LogLevel.info, '├─$separator─┤', tag: tag);

  // Print rows
  for (final row in data) {
    final rowStr = keys.map((k) {
      final value = row[k]?.toString() ?? '';
      return value.padRight(columnWidths[k]!);
    }).join(' │ ');
    _log(LogLevel.info, '│ $rowStr │', tag: tag);
  }

  _log(LogLevel.info, '└─$separator─┘', tag: tag);
}