toString method
override
A string representation of this object.
Some classes have a default textual representation,
often paired with a static parse
function (like int.parse).
These classes will provide the textual representation as
their string representation.
Other classes have no meaningful textual representation
that a program will care about.
Such classes will typically override toString
to provide
useful information when inspecting the object,
mainly for debugging or logging.
Implementation
@override
String toString() {
// Figure out the longest path so we know how much to pad.
var longest = traces
.map((trace) => trace.frames
.map((frame) => frame.location.length)
.fold(0, math.max))
.fold(0, math.max);
// Don't call out to [Trace.toString] here because that doesn't ensure that
// padding is consistent across all traces.
return traces
.map((trace) => trace.frames
.map((frame) =>
'${frame.location.padRight(longest)} ${frame.member}\n')
.join())
.join(chainGap);
}