From 418fa9d62610b6990f18c0a7cf6c194364fad4b8 Mon Sep 17 00:00:00 2001 From: Callum Moffat Date: Mon, 26 Aug 2024 18:32:22 -0400 Subject: [PATCH] Optimize out LayoutBuilder from ReorderableList children (#153987) PR #147863 used a `LayoutBuilder` to ensure `ReorderableList` proxy items are built with the same constraints as their normal counterparts. However we don't actually need the `LayoutBuilder`, we can just grab the constraints from the `RenderBox` at proxy-creation-time. --- .../lib/src/widgets/reorderable_list.dart | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/flutter/lib/src/widgets/reorderable_list.dart b/packages/flutter/lib/src/widgets/reorderable_list.dart index f7aaf7bf3c7..9acef853017 100644 --- a/packages/flutter/lib/src/widgets/reorderable_list.dart +++ b/packages/flutter/lib/src/widgets/reorderable_list.dart @@ -14,7 +14,6 @@ import 'basic.dart'; import 'debug.dart'; import 'framework.dart'; import 'inherited_theme.dart'; -import 'layout_builder.dart'; import 'localizations.dart'; import 'media_query.dart'; import 'overlay.dart'; @@ -1087,8 +1086,6 @@ class _ReorderableItemState extends State<_ReorderableItem> { } } bool _dragging = false; - BoxConstraints? get childLayoutConstraints => _childLayoutConstraints; - BoxConstraints? _childLayoutConstraints; @override void initState() { @@ -1120,13 +1117,10 @@ class _ReorderableItemState extends State<_ReorderableItem> { return SizedBox.fromSize(size: size); } _listState._registerItem(this); - return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) { - _childLayoutConstraints = constraints; - return Transform( - transform: Matrix4.translationValues(offset.dx, offset.dy, 0.0), - child: widget.child, - ); - }); + return Transform.translate( + offset: offset, + child: widget.child, + ); } @override @@ -1346,7 +1340,7 @@ class _DragInfo extends Drag { dragOffset = itemRenderBox.globalToLocal(initialPosition); itemSize = item.context.size!; itemExtent = _sizeExtent(itemSize, scrollDirection); - itemLayoutConstraints = item.childLayoutConstraints!; + itemLayoutConstraints = itemRenderBox.constraints; scrollable = Scrollable.of(item.context); }