debugPrintStack function Null safety
- {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'));
}