formatStackTrace method

String? formatStackTrace()

格式化方法执行堆栈

Implementation

String? formatStackTrace() {
  if (methodCount == null || methodCount! <= 0) return null;

  List<String> formatted = [];
  List<String> lines = StackTrace.current
      .toString()
      .split('\n')
      .where(
        (line) =>
            !_discardDeviceStacktraceLine(line) &&
            !_discardWebStacktraceLine(line) &&
            !_discardBrowserStacktraceLine(line) &&
            line.isNotEmpty,
      )
      .toList();

  int stackTraceLength = min(lines.length, methodCount!);
  for (int count = 0; count < stackTraceLength; count++) {
    var line = lines[count];
    formatted.add('#$count   ${line.replaceFirst(RegExp(r'#\d+\s+'), '')}');
  }

  if (formatted.isEmpty) {
    return null;
  } else {
    return formatted.join('\n');
  }
}