Reduce closure allocation in RenderObject.cleanRelayoutBoundary (#51439)
diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart
index 346b6cc..87a81a6 100644
--- a/packages/flutter/lib/src/rendering/object.dart
+++ b/packages/flutter/lib/src/rendering/object.dart
@@ -1584,12 +1584,15 @@
if (_relayoutBoundary != this) {
_relayoutBoundary = null;
_needsLayout = true;
- visitChildren((RenderObject child) {
- child._cleanRelayoutBoundary();
- });
+ visitChildren(_cleanChildRelayoutBoundary);
}
}
+ // Reduces closure allocation for visitChildren use cases.
+ static void _cleanChildRelayoutBoundary(RenderObject child) {
+ child._cleanRelayoutBoundary();
+ }
+
/// Bootstrap the rendering pipeline by scheduling the very first layout.
///
/// Requires this render object to be attached and that this render object
@@ -1724,9 +1727,7 @@
// The local relayout boundary has changed, must notify children in case
// they also need updating. Otherwise, they will be confused about what
// their actual relayout boundary is later.
- visitChildren((RenderObject child) {
- child._cleanRelayoutBoundary();
- });
+ visitChildren(_cleanChildRelayoutBoundary);
}
_relayoutBoundary = relayoutBoundary;
assert(!_debugMutationsLocked);