w static method

void w(
  1. dynamic object, {
  2. dynamic level = LogLevel.FINE,
  3. dynamic header = true,
})

Implementation

static void w(dynamic object,
    {var level = LogLevel.FINE, var header = true}) {
  final frames = StackTrace.current.toString().split('\n');
  final callerFrame = frames.firstWhere(
    (frame) => !frame.contains('console.dart'),
    orElse: () => '',
  );

  String startColor = "";
  String endColor = "";

  switch (level) {
    case LogLevel.ERROR:
      startColor = "\x1B[38;5;196m"; // bright red
      break;

    case LogLevel.WARNING:
      startColor = "\x1B[38;2;255;193;7m";
      break;
    case LogLevel.DEBUG:
      startColor = "\x1B[38;2;150;150;150m"; // gray
      break;

    case LogLevel.FINE:
      startColor = "\x1B[38;2;80;220;120m"; // gray
      break;
  }

  StringBuffer str = StringBuffer();
  str.writeln("$startColor┌${"─" * 98}┐$endColor");
  if (header) {
    str.writeln("$startColor│ $callerFrame$endColor");
    str.writeln("$startColor├${"─" * 98}┤$endColor");
  }
  for (var obLine in object.toString().split('\n')) {
    str.writeln("$startColor│ $obLine$endColor");
  }
  str.writeln(startColor + ("└${"─" * 98}┘") + endColor);

  print(str.toString());
}