debugPrintStack function
- StackTrace? stackTrace,
- String? label,
- int? maxFrames,
Dump the stack to the console using debugPrint and FlutterError.defaultStackFilter.
If the stackTrace
parameter is null, the StackTrace.current is used to
obtain the stack.
The maxFrames
argument can be given to limit the stack to the given number
of lines before filtering is applied. By default, all stack lines are
included.
The label
argument, if present, will be printed before the stack.
Implementation
void debugPrintStack({StackTrace? stackTrace, String? label, int? maxFrames}) {
if (label != null) {
debugPrint(label);
}
if (stackTrace == null) {
stackTrace = StackTrace.current;
} else {
stackTrace = FlutterError.demangleStackTrace(stackTrace);
}
Iterable<String> lines = stackTrace.toString().trimRight().split('\n');
if (kIsWeb && lines.isNotEmpty) {
// Remove extra call to StackTrace.current for web platform.
// TODO(ferhat): remove when https://github.com/flutter/flutter/issues/37635
// is addressed.
lines = lines.skipWhile((String line) {
return line.contains('StackTrace.current') ||
line.contains('dart-sdk/lib/_internal') ||
line.contains('dart:sdk_internal');
});
}
if (maxFrames != null) {
lines = lines.take(maxFrames);
}
debugPrint(FlutterError.defaultStackFilter(lines).join('\n'));
}