truncateStackTrace function
StackTrace?
truncateStackTrace(
- StackTrace? stackTrace, {
- int maxFrames = kDefaultStackFrameLimit,
Truncates stackTrace to maxFrames frames while keeping it a proper
StackTrace so that tools like Flutter DevTools can still parse and
display clickable frame links.
Returns the original object when it is already within the limit, so no allocation occurs in the common case.
Implementation
StackTrace? truncateStackTrace(
StackTrace? stackTrace, {
int maxFrames = kDefaultStackFrameLimit,
}) {
if (stackTrace == null) return null;
final lines = stackTrace
.toString()
.split('\n')
.where((l) => l.isNotEmpty)
.toList(growable: false);
if (lines.length <= maxFrames) return stackTrace;
final truncated = [
...lines.take(maxFrames),
'... (${lines.length - maxFrames} more frames)',
].join('\n');
return StackTrace.fromString(truncated);
}