Use a simpler implementation of Diagnosticable.toString when running in profile/release mode (#28661)
Diagnosticable.toString may be called in performance sensitive contexts
(for example, creating debug labels for Tickers)
diff --git a/packages/flutter/lib/src/foundation/diagnostics.dart b/packages/flutter/lib/src/foundation/diagnostics.dart
index dc45476..5c0b812 100644
--- a/packages/flutter/lib/src/foundation/diagnostics.dart
+++ b/packages/flutter/lib/src/foundation/diagnostics.dart
@@ -2127,7 +2127,12 @@
@override
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.debug }) {
- return toDiagnosticsNode(style: DiagnosticsTreeStyle.singleLine).toString(minLevel: minLevel);
+ String fullString;
+ assert(() {
+ fullString = toDiagnosticsNode(style: DiagnosticsTreeStyle.singleLine).toString(minLevel: minLevel);
+ return true;
+ }());
+ return fullString ?? toStringShort();
}
/// Returns a debug representation of the object that is used by debugging