betterPrint function

void betterPrint(
  1. String message, [
  2. int maxLine = 0
])

A better way to show print message

maxLine to control how many line to show after message.

Implementation

void betterPrint(String message, [int maxLine = 0]) {
  if (message.runtimeType != String) message = message.toString();
  final stackTrace = StackTrace.current;
  Iterable<String> lines = stackTrace.toString().trimRight().split('\n');
  // removing [betterPrint] from stack
  String line = lines.toList()[1];
  final i = line.indexOf('package:');
  if (maxLine > 0) {
    lines = lines.take(maxLine + (i < 0 ? 2 : 1));
    debugPrint(
      FlutterError.defaultStackFilter(lines.toList()..removeRange(0, i < 0 ? 2 : 1))
          .join('\n')
          .replaceAll('packages/', 'package:')
          .replaceRange(0, 2, message),
    );
  } else {
    final list = line.split(" ");
    debugPrint('$message ${list.last}s');
  }
}