Revert "(insert|move|remove)ChildRenderObject Deprecation: Step 1 (#64189)" (#64249)
This reverts commit 21cfed34d478d6a1c0223557a7935b69b15613bb.
diff --git a/packages/flutter/lib/src/cupertino/action_sheet.dart b/packages/flutter/lib/src/cupertino/action_sheet.dart
index 364d148..8bc6e64 100644
--- a/packages/flutter/lib/src/cupertino/action_sheet.dart
+++ b/packages/flutter/lib/src/cupertino/action_sheet.dart
@@ -448,13 +448,13 @@
}
@override
- void insertRenderObjectChild(RenderObject child, _AlertSections slot) {
+ void insertChildRenderObject(RenderObject child, _AlertSections slot) {
_placeChildInSlot(child, slot);
}
@override
- void moveRenderObjectChild(RenderObject child, _AlertSections oldSlot, _AlertSections newSlot) {
- _placeChildInSlot(child, newSlot);
+ void moveChildRenderObject(RenderObject child, _AlertSections slot) {
+ _placeChildInSlot(child, slot);
}
@override
@@ -478,7 +478,7 @@
}
@override
- void removeRenderObjectChild(RenderObject child, _AlertSections slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child == renderObject.contentSection || child == renderObject.actionsSection);
if (renderObject.contentSection == child) {
renderObject.contentSection = null;
diff --git a/packages/flutter/lib/src/cupertino/dialog.dart b/packages/flutter/lib/src/cupertino/dialog.dart
index b310a71..f8c5361 100644
--- a/packages/flutter/lib/src/cupertino/dialog.dart
+++ b/packages/flutter/lib/src/cupertino/dialog.dart
@@ -433,7 +433,7 @@
}
@override
- void insertRenderObjectChild(RenderObject child, _AlertDialogSections slot) {
+ void insertChildRenderObject(RenderObject child, _AlertDialogSections slot) {
assert(slot != null);
switch (slot) {
case _AlertDialogSections.contentSection:
@@ -446,7 +446,7 @@
}
@override
- void moveRenderObjectChild(RenderObject child, _AlertDialogSections oldSlot, _AlertDialogSections newSlot) {
+ void moveChildRenderObject(RenderObject child, _AlertDialogSections slot) {
assert(false);
}
@@ -470,7 +470,7 @@
}
@override
- void removeRenderObjectChild(RenderObject child, _AlertDialogSections slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child == renderObject.contentSection || child == renderObject.actionsSection);
if (renderObject.contentSection == child) {
renderObject.contentSection = null;
diff --git a/packages/flutter/lib/src/cupertino/text_selection.dart b/packages/flutter/lib/src/cupertino/text_selection.dart
index fad1d67..d3bd9e0 100644
--- a/packages/flutter/lib/src/cupertino/text_selection.dart
+++ b/packages/flutter/lib/src/cupertino/text_selection.dart
@@ -775,9 +775,10 @@
}
@override
- void insertRenderObjectChild(RenderObject child, dynamic slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slot) {
if (slot is _CupertinoTextSelectionToolbarItemsSlot) {
assert(child is RenderBox);
+ assert(slot is _CupertinoTextSelectionToolbarItemsSlot);
_updateRenderObject(child as RenderBox, slot);
assert(renderObject.childToSlot.containsKey(child));
assert(renderObject.slotToChild.containsKey(slot));
@@ -793,9 +794,9 @@
// This is not reachable for children that don't have an IndexedSlot.
@override
- void moveRenderObjectChild(RenderObject child, IndexedSlot<Element> oldSlot, IndexedSlot<Element> newSlot) {
+ void moveChildRenderObject(RenderObject child, IndexedSlot<Element> slot) {
assert(child.parent == renderObject);
- renderObject.move(child as RenderBox, after: newSlot?.value?.renderObject as RenderBox);
+ renderObject.move(child as RenderBox, after: slot?.value?.renderObject as RenderBox);
}
static bool _shouldPaint(Element child) {
@@ -803,20 +804,18 @@
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
// Check if the child is in a slot.
- if (slot is _CupertinoTextSelectionToolbarItemsSlot) {
+ if (renderObject.childToSlot.containsKey(child)) {
assert(child is RenderBox);
- assert(renderObject.slotToChild.containsKey(slot));
assert(renderObject.childToSlot.containsKey(child));
- _updateRenderObject(null, slot);
+ _updateRenderObject(null, renderObject.childToSlot[child]);
assert(!renderObject.childToSlot.containsKey(child));
assert(!renderObject.slotToChild.containsKey(slot));
return;
}
// Otherwise look for it in the list of children.
- assert(slot is IndexedSlot);
assert(child.parent == renderObject);
renderObject.remove(child as RenderBox);
}
diff --git a/packages/flutter/lib/src/material/chip.dart b/packages/flutter/lib/src/material/chip.dart
index f0f6c90..6a8900d 100644
--- a/packages/flutter/lib/src/material/chip.dart
+++ b/packages/flutter/lib/src/material/chip.dart
@@ -2148,25 +2148,26 @@
}
@override
- void insertRenderObjectChild(RenderObject child, _ChipSlot slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slotValue) {
assert(child is RenderBox);
+ assert(slotValue is _ChipSlot);
+ final _ChipSlot slot = slotValue as _ChipSlot;
_updateRenderObject(child, slot);
assert(renderObject.childToSlot.keys.contains(child));
assert(renderObject.slotToChild.keys.contains(slot));
}
@override
- void removeRenderObjectChild(RenderObject child, _ChipSlot slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child is RenderBox);
- assert(renderObject.childToSlot[child] == slot);
- assert(renderObject.slotToChild[slot] == child);
- _updateRenderObject(null, slot);
+ assert(renderObject.childToSlot.keys.contains(child));
+ _updateRenderObject(null, renderObject.childToSlot[child]);
assert(!renderObject.childToSlot.keys.contains(child));
assert(!renderObject.slotToChild.keys.contains(slot));
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slotValue) {
assert(false, 'not reachable');
}
}
diff --git a/packages/flutter/lib/src/material/input_decorator.dart b/packages/flutter/lib/src/material/input_decorator.dart
index 520a32e..76d3962 100644
--- a/packages/flutter/lib/src/material/input_decorator.dart
+++ b/packages/flutter/lib/src/material/input_decorator.dart
@@ -1654,25 +1654,26 @@
}
@override
- void insertRenderObjectChild(RenderObject child, _DecorationSlot slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slotValue) {
assert(child is RenderBox);
+ assert(slotValue is _DecorationSlot);
+ final _DecorationSlot slot = slotValue as _DecorationSlot;
_updateRenderObject(child as RenderBox, slot);
assert(renderObject.childToSlot.keys.contains(child));
assert(renderObject.slotToChild.keys.contains(slot));
}
@override
- void removeRenderObjectChild(RenderObject child, _DecorationSlot slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child is RenderBox);
- assert(renderObject.childToSlot[child] == slot);
- assert(renderObject.slotToChild[slot] == child);
- _updateRenderObject(null, slot);
+ assert(renderObject.childToSlot.keys.contains(child));
+ _updateRenderObject(null, renderObject.childToSlot[child]);
assert(!renderObject.childToSlot.keys.contains(child));
assert(!renderObject.slotToChild.keys.contains(slot));
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slotValue) {
assert(false, 'not reachable');
}
}
diff --git a/packages/flutter/lib/src/material/list_tile.dart b/packages/flutter/lib/src/material/list_tile.dart
index d1ecc8a..97929f9 100644
--- a/packages/flutter/lib/src/material/list_tile.dart
+++ b/packages/flutter/lib/src/material/list_tile.dart
@@ -1250,25 +1250,26 @@
}
@override
- void insertRenderObjectChild(RenderObject child, _ListTileSlot slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slotValue) {
assert(child is RenderBox);
+ assert(slotValue is _ListTileSlot);
+ final _ListTileSlot slot = slotValue as _ListTileSlot;
_updateRenderObject(child as RenderBox, slot);
assert(renderObject.childToSlot.keys.contains(child));
assert(renderObject.slotToChild.keys.contains(slot));
}
@override
- void removeRenderObjectChild(RenderObject child, _ListTileSlot slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child is RenderBox);
- assert(renderObject.childToSlot[child] == slot);
- assert(renderObject.slotToChild[slot] == child);
- _updateRenderObject(null, slot);
+ assert(renderObject.childToSlot.keys.contains(child));
+ _updateRenderObject(null, renderObject.childToSlot[child]);
assert(!renderObject.childToSlot.keys.contains(child));
assert(!renderObject.slotToChild.keys.contains(slot));
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slotValue) {
assert(false, 'not reachable');
}
}
diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart
index ea6d60d..71296d8 100644
--- a/packages/flutter/lib/src/widgets/binding.dart
+++ b/packages/flutter/lib/src/widgets/binding.dart
@@ -1268,19 +1268,19 @@
RenderObjectWithChildMixin<T> get renderObject => super.renderObject as RenderObjectWithChildMixin<T>;
@override
- void insertRenderObjectChild(RenderObject child, dynamic slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slot) {
assert(slot == _rootChildSlot);
assert(renderObject.debugValidateChild(child));
renderObject.child = child as T;
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(renderObject.child == child);
renderObject.child = null;
}
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 8199107..1de80e4 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -3290,9 +3290,9 @@
/// the "active" lifecycle state.
///
/// Subclasses that override this method are likely to want to also override
- /// [update], [visitChildren], [RenderObjectElement.insertRenderObjectChild],
- /// [RenderObjectElement.moveRenderObjectChild], and
- /// [RenderObjectElement.removeRenderObjectChild].
+ /// [update], [visitChildren], [RenderObjectElement.insertChildRenderObject],
+ /// [RenderObjectElement.moveChildRenderObject], and
+ /// [RenderObjectElement.removeChildRenderObject].
@mustCallSuper
void mount(Element parent, dynamic newSlot) {
assert(_debugLifecycleState == _ElementLifecycle.initial);
@@ -5335,9 +5335,9 @@
/// ### Maintaining the render object tree
///
/// Once a descendant produces a render object, it will call
-/// [insertRenderObjectChild]. If the descendant's slot changes identity, it
-/// will call [moveRenderObjectChild]. If a descendant goes away, it will call
-/// [removeRenderObjectChild].
+/// [insertChildRenderObject]. If the descendant's slot changes identity, it
+/// will call [moveChildRenderObject]. If a descendant goes away, it will call
+/// [removeChildRenderObject].
///
/// These three methods should update the render tree accordingly, attaching,
/// moving, and detaching the given child render object from this element's own
@@ -5727,11 +5727,10 @@
@override
void _updateSlot(dynamic newSlot) {
- final dynamic oldSlot = slot;
- assert(oldSlot != newSlot);
+ assert(slot != newSlot);
super._updateSlot(newSlot);
assert(slot == newSlot);
- _ancestorRenderObjectElement.moveRenderObjectChild(renderObject, oldSlot, slot);
+ _ancestorRenderObjectElement.moveChildRenderObject(renderObject, slot);
}
@override
@@ -5739,7 +5738,7 @@
assert(_ancestorRenderObjectElement == null);
_slot = newSlot;
_ancestorRenderObjectElement = _findAncestorRenderObjectElement();
- _ancestorRenderObjectElement?.insertRenderObjectChild(renderObject, newSlot);
+ _ancestorRenderObjectElement?.insertChildRenderObject(renderObject, newSlot);
final ParentDataElement<ParentData> parentDataElement = _findAncestorParentDataElement();
if (parentDataElement != null)
_updateParentData(parentDataElement.widget);
@@ -5748,7 +5747,7 @@
@override
void detachRenderObject() {
if (_ancestorRenderObjectElement != null) {
- _ancestorRenderObjectElement.removeRenderObjectChild(renderObject, slot);
+ _ancestorRenderObjectElement.removeChildRenderObject(renderObject);
_ancestorRenderObjectElement = null;
}
_slot = null;
@@ -5756,53 +5755,6 @@
/// Insert the given child into [renderObject] at the given slot.
///
- /// {@macro flutter.widgets.slots}
- ///
- /// ## Deprecation
- ///
- /// This method has been deprecated in favor of [insertRenderObjectChild].
- ///
- /// The reason for the deprecation is to provide the `oldSlot` argument to
- /// the [moveRenderObjectChild] method (such an argument was missing from
- /// the now-deprecated [moveChildRenderObject] method) and the `slot`
- /// argument to the [removeRenderObjectChild] method (such an argument was
- /// missing from the now-deprecated [removeChildRenderObject] method). While
- /// no argument was added to [insertRenderObjectChild], the name change (and
- /// corresponding deprecation) was made to maintain naming parity with the
- /// other two methods.
- ///
- /// To migrate, simply override [insertRenderObjectChild] instead of
- /// [insertChildRenderObject]. The arguments stay the same. Subclasses should
- /// _not_ call `super.insertRenderObjectChild(...)`.
- @protected
- @mustCallSuper
- @Deprecated(
- 'Override insertRenderObjectChild instead. '
- 'This feature was deprecated after v1.21.0-9.0.pre.'
- )
- void insertChildRenderObject(covariant RenderObject child, covariant dynamic slot) {
- assert(() {
- throw FlutterError.fromParts(<DiagnosticsNode>[
- ErrorSummary('RenderObjectElement.insertChildRenderObject() is deprecated.'),
- toDiagnosticsNode(
- name: 'insertChildRenderObject() was called on this Element',
- style: DiagnosticsTreeStyle.shallow,
- ),
- ErrorDescription('insertChildRenderObject() has been deprecated in favor of '
- 'insertRenderObjectChild(). See https://github.com/flutter/flutter/issues/63269 '
- 'for details.'),
- ErrorHint('Rather than overriding insertChildRenderObject() in your '
- 'RenderObjectElement subclass, override insertRenderObjectChild() instead, '
- "and DON'T call super.insertRenderObjectChild(). If you're implementing a "
- 'new RenderObjectElement, you should override/implement '
- 'insertRenderObjectChild(), moveRenderObjectChild(), and '
- 'removeRenderObjectChild().'),
- ]);
- }());
- }
-
- /// Insert the given child into [renderObject] at the given slot.
- ///
/// {@template flutter.widgets.slots}
/// The semantics of `slot` are determined by this element. For example, if
/// this element has a single child, the slot should always be null. If this
@@ -5810,9 +5762,7 @@
/// [IndexedSlot] is a convenient value for the slot.
/// {@endtemplate}
@protected
- void insertRenderObjectChild(covariant RenderObject child, covariant dynamic slot) {
- insertChildRenderObject(child, slot);
- }
+ void insertChildRenderObject(covariant RenderObject child, covariant dynamic slot);
/// Move the given child to the given slot.
///
@@ -5828,127 +5778,14 @@
/// always having the same slot (and where children in different slots are never
/// compared against each other for the purposes of updating one slot with the
/// element from another slot) would never call this.
- ///
- /// ## Deprecation
- ///
- /// This method has been deprecated in favor of [moveRenderObjectChild].
- ///
- /// The reason for the deprecation is to provide the `oldSlot` argument to
- /// the [moveRenderObjectChild] method (such an argument was missing from
- /// the now-deprecated [moveChildRenderObject] method) and the `slot`
- /// argument to the [removeRenderObjectChild] method (such an argument was
- /// missing from the now-deprecated [removeChildRenderObject] method). While
- /// no argument was added to [insertRenderObjectChild], the name change (and
- /// corresponding deprecation) was made to maintain naming parity with the
- /// other two methods.
- ///
- /// To migrate, simply override [moveRenderObjectChild] instead of
- /// [moveChildRenderObject]. The `slot` argument becomes the `newSlot`
- /// argument, and the method will now take a new `oldSlot` argument that
- /// subclasses may find useful. Subclasses should _not_ call
- /// `super.moveRenderObjectChild(...)`.
@protected
- @mustCallSuper
- @Deprecated(
- 'Override moveRenderObjectChild instead. '
- 'This feature was deprecated after v1.21.0-9.0.pre.'
- )
- void moveChildRenderObject(covariant RenderObject child, covariant dynamic slot) {
- assert(() {
- throw FlutterError.fromParts(<DiagnosticsNode>[
- ErrorSummary('RenderObjectElement.moveChildRenderObject() is deprecated.'),
- toDiagnosticsNode(
- name: 'super.moveChildRenderObject() was called on this Element',
- style: DiagnosticsTreeStyle.shallow,
- ),
- ErrorDescription('moveChildRenderObject() has been deprecated in favor of '
- 'moveRenderObjectChild(). See https://github.com/flutter/flutter/issues/63269 '
- 'for details.'),
- ErrorHint('Rather than overriding moveChildRenderObject() in your '
- 'RenderObjectElement subclass, override moveRenderObjectChild() instead, '
- "and DON'T call super.moveRenderObjectChild(). If you're implementing a "
- 'new RenderObjectElement, you should override/implement '
- 'insertRenderObjectChild(), moveRenderObjectChild(), and '
- 'removeRenderObjectChild().'),
- ]);
- }());
- }
-
- /// Move the given child from the given old slot to the given new slot.
- ///
- /// The given child is guaranteed to have [renderObject] as its parent.
- ///
- /// {@macro flutter.widgets.slots}
- ///
- /// This method is only ever called if [updateChild] can end up being called
- /// with an existing [Element] child and a `slot` that differs from the slot
- /// that element was previously given. [MultiChildRenderObjectElement] does this,
- /// for example. [SingleChildRenderObjectElement] does not (since the `slot` is
- /// always null). An [Element] that has a specific set of slots with each child
- /// always having the same slot (and where children in different slots are never
- /// compared against each other for the purposes of updating one slot with the
- /// element from another slot) would never call this.
- @protected
- void moveRenderObjectChild(covariant RenderObject child, covariant dynamic oldSlot, covariant dynamic newSlot) {
- moveChildRenderObject(child, newSlot);
- }
+ void moveChildRenderObject(covariant RenderObject child, covariant dynamic slot);
/// Remove the given child from [renderObject].
///
/// The given child is guaranteed to have [renderObject] as its parent.
- ///
- /// ## Deprecation
- ///
- /// This method has been deprecated in favor of [removeRenderObjectChild].
- ///
- /// The reason for the deprecation is to provide the `oldSlot` argument to
- /// the [moveRenderObjectChild] method (such an argument was missing from
- /// the now-deprecated [moveChildRenderObject] method) and the `slot`
- /// argument to the [removeRenderObjectChild] method (such an argument was
- /// missing from the now-deprecated [removeChildRenderObject] method). While
- /// no argument was added to [insertRenderObjectChild], the name change (and
- /// corresponding deprecation) was made to maintain naming parity with the
- /// other two methods.
- ///
- /// To migrate, simply override [removeRenderObjectChild] instead of
- /// [removeChildRenderObject]. The method will now take a new `slot` argument
- /// that subclasses may find useful. Subclasses should _not_ call
- /// `super.removeRenderObjectChild(...)`.
@protected
- @mustCallSuper
- @Deprecated(
- 'Override removeRenderObjectChild instead. '
- 'This feature was deprecated after v1.21.0-9.0.pre.'
- )
- void removeChildRenderObject(covariant RenderObject child) {
- assert(() {
- throw FlutterError.fromParts(<DiagnosticsNode>[
- ErrorSummary('RenderObjectElement.removeChildRenderObject() is deprecated.'),
- toDiagnosticsNode(
- name: 'super.removeChildRenderObject() was called on this Element',
- style: DiagnosticsTreeStyle.shallow,
- ),
- ErrorDescription('removeChildRenderObject() has been deprecated in favor of '
- 'removeRenderObjectChild(). See https://github.com/flutter/flutter/issues/63269 '
- 'for details.'),
- ErrorHint('Rather than overriding removeChildRenderObject() in your '
- 'RenderObjectElement subclass, override removeRenderObjectChild() instead, '
- "and DON'T call super.removeRenderObjectChild(). If you're implementing a "
- 'new RenderObjectElement, you should override/implement '
- 'insertRenderObjectChild(), moveRenderObjectChild(), and '
- 'removeRenderObjectChild().'),
- ]);
- }());
- }
-
- /// Remove the given child from [renderObject].
- ///
- /// The given child is guaranteed to have been inserted at the given `slot`
- /// and have [renderObject] as its parent.
- @protected
- void removeRenderObjectChild(covariant RenderObject child, covariant dynamic slot) {
- removeChildRenderObject(child);
- }
+ void removeChildRenderObject(covariant RenderObject child);
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
@@ -6000,17 +5837,17 @@
}
@override
- void insertRenderObjectChild(RenderObject child, dynamic slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(false);
}
@@ -6063,7 +5900,7 @@
}
@override
- void insertRenderObjectChild(RenderObject child, dynamic slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slot) {
final RenderObjectWithChildMixin<RenderObject> renderObject = this.renderObject as RenderObjectWithChildMixin<RenderObject>;
assert(slot == null);
assert(renderObject.debugValidateChild(child));
@@ -6072,12 +5909,12 @@
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
final RenderObjectWithChildMixin<RenderObject> renderObject = this.renderObject as RenderObjectWithChildMixin<RenderObject>;
assert(renderObject.child == child);
renderObject.child = null;
@@ -6121,7 +5958,7 @@
final Set<Element> _forgottenChildren = HashSet<Element>();
@override
- void insertRenderObjectChild(RenderObject child, IndexedSlot<Element> slot) {
+ void insertChildRenderObject(RenderObject child, IndexedSlot<Element> slot) {
final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject =
this.renderObject as ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>>;
assert(renderObject.debugValidateChild(child));
@@ -6130,16 +5967,16 @@
}
@override
- void moveRenderObjectChild(RenderObject child, IndexedSlot<Element> oldSlot, IndexedSlot<Element> newSlot) {
+ void moveChildRenderObject(RenderObject child, IndexedSlot<Element> slot) {
final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject =
this.renderObject as ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>>;
assert(child.parent == renderObject);
- renderObject.move(child, after: newSlot?.value?.renderObject);
+ renderObject.move(child, after: slot?.value?.renderObject);
assert(renderObject == this.renderObject);
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject =
this.renderObject as ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>>;
assert(child.parent == renderObject);
diff --git a/packages/flutter/lib/src/widgets/layout_builder.dart b/packages/flutter/lib/src/widgets/layout_builder.dart
index 558a9a3..f5751e6 100644
--- a/packages/flutter/lib/src/widgets/layout_builder.dart
+++ b/packages/flutter/lib/src/widgets/layout_builder.dart
@@ -156,7 +156,7 @@
}
@override
- void insertRenderObjectChild(RenderObject child, dynamic slot) {
+ void insertChildRenderObject(RenderObject child, dynamic slot) {
final RenderObjectWithChildMixin<RenderObject> renderObject = this.renderObject;
assert(slot == null);
assert(renderObject.debugValidateChild(child));
@@ -165,12 +165,12 @@
}
@override
- void moveRenderObjectChild(RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
}
@override
- void removeRenderObjectChild(RenderObject child, dynamic slot) {
+ void removeChildRenderObject(RenderObject child) {
final RenderConstrainedLayoutBuilder<ConstraintType, RenderObject> renderObject = this.renderObject;
assert(renderObject.child == child);
renderObject.child = null;
diff --git a/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart b/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart
index 1b6fc21..26e32c3 100644
--- a/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart
+++ b/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart
@@ -907,7 +907,7 @@
}
@override
- void insertRenderObjectChild(RenderObject child, int slot) {
+ void insertChildRenderObject(RenderObject child, int slot) {
final RenderListWheelViewport renderObject = this.renderObject;
assert(renderObject.debugValidateChild(child));
renderObject.insert(child as RenderBox, after: _childElements[slot - 1]?.renderObject as RenderBox);
@@ -915,7 +915,7 @@
}
@override
- void moveRenderObjectChild(RenderObject child, int oldSlot, int newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
const String moveChildRenderObjectErrorMessage =
'Currently we maintain the list in contiguous increasing order, so '
'moving children around is not allowed.';
@@ -923,7 +923,7 @@
}
@override
- void removeRenderObjectChild(RenderObject child, int slot) {
+ void removeChildRenderObject(RenderObject child) {
assert(child.parent == renderObject);
renderObject.remove(child as RenderBox);
}
diff --git a/packages/flutter/lib/src/widgets/sliver.dart b/packages/flutter/lib/src/widgets/sliver.dart
index c040a05..1fde2ef 100644
--- a/packages/flutter/lib/src/widgets/sliver.dart
+++ b/packages/flutter/lib/src/widgets/sliver.dart
@@ -1273,7 +1273,7 @@
}
@override
- void insertRenderObjectChild(covariant RenderObject child, int slot) {
+ void insertChildRenderObject(covariant RenderObject child, int slot) {
assert(slot != null);
assert(_currentlyUpdatingChildIndex == slot);
assert(renderObject.debugValidateChild(child));
@@ -1286,14 +1286,14 @@
}
@override
- void moveRenderObjectChild(covariant RenderObject child, int oldSlot, int newSlot) {
- assert(newSlot != null);
- assert(_currentlyUpdatingChildIndex == newSlot);
+ void moveChildRenderObject(covariant RenderObject child, int slot) {
+ assert(slot != null);
+ assert(_currentlyUpdatingChildIndex == slot);
renderObject.move(child as RenderBox, after: _currentBeforeChild);
}
@override
- void removeRenderObjectChild(covariant RenderObject child, int slot) {
+ void removeChildRenderObject(covariant RenderObject child) {
assert(_currentlyUpdatingChildIndex != null);
renderObject.remove(child as RenderBox);
}
diff --git a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
index 673e1cb..b26cc4b 100644
--- a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
+++ b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
@@ -236,18 +236,18 @@
}
@override
- void insertRenderObjectChild(covariant RenderBox child, dynamic slot) {
+ void insertChildRenderObject(covariant RenderBox child, dynamic slot) {
assert(renderObject.debugValidateChild(child));
renderObject.child = child;
}
@override
- void moveRenderObjectChild(covariant RenderObject child, dynamic oldSlot, dynamic newSlot) {
+ void moveChildRenderObject(covariant RenderObject child, dynamic slot) {
assert(false);
}
@override
- void removeRenderObjectChild(covariant RenderObject child, dynamic slot) {
+ void removeChildRenderObject(covariant RenderObject child) {
renderObject.child = null;
}
diff --git a/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart b/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart
index fab01fa..b6e6c2a 100644
--- a/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart
+++ b/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart
@@ -75,12 +75,12 @@
static final Object _prototypeSlot = Object();
@override
- void insertRenderObjectChild(covariant RenderObject child, covariant dynamic slot) {
+ void insertChildRenderObject(covariant RenderObject child, covariant dynamic slot) {
if (slot == _prototypeSlot) {
assert(child is RenderBox);
renderObject.child = child as RenderBox;
} else {
- super.insertRenderObjectChild(child, slot as int);
+ super.insertChildRenderObject(child, slot as int);
}
}
@@ -91,19 +91,19 @@
}
@override
- void moveRenderObjectChild(RenderBox child, dynamic oldSlot, dynamic newSlot) {
- if (newSlot == _prototypeSlot)
+ void moveChildRenderObject(RenderBox child, dynamic slot) {
+ if (slot == _prototypeSlot)
assert(false); // There's only one prototype child so it cannot be moved.
else
- super.moveRenderObjectChild(child, oldSlot as int, newSlot as int);
+ super.moveChildRenderObject(child, slot as int);
}
@override
- void removeRenderObjectChild(RenderBox child, dynamic slot) {
+ void removeChildRenderObject(RenderBox child) {
if (renderObject.child == child)
renderObject.child = null;
else
- super.removeRenderObjectChild(child, slot as int);
+ super.removeChildRenderObject(child);
}
@override
diff --git a/packages/flutter/lib/src/widgets/table.dart b/packages/flutter/lib/src/widgets/table.dart
index afbfb40..70c4a99 100644
--- a/packages/flutter/lib/src/widgets/table.dart
+++ b/packages/flutter/lib/src/widgets/table.dart
@@ -303,16 +303,16 @@
}
@override
- void insertRenderObjectChild(RenderObject child, IndexedSlot<Element> slot) {
+ void insertChildRenderObject(RenderObject child, IndexedSlot<Element> slot) {
renderObject.setupParentData(child);
}
@override
- void moveRenderObjectChild(RenderObject child, IndexedSlot<Element> oldSlot, IndexedSlot<Element> newSlot) {
+ void moveChildRenderObject(RenderObject child, dynamic slot) {
}
@override
- void removeRenderObjectChild(RenderObject child, IndexedSlot<Element> slot) {
+ void removeChildRenderObject(RenderObject child) {
final TableCellParentData childParentData = child.parentData as TableCellParentData;
renderObject.setChild(childParentData.x, childParentData.y, null);
}
diff --git a/packages/flutter/test/widgets/render_object_element_test.dart b/packages/flutter/test/widgets/render_object_element_test.dart
deleted file mode 100644
index fbbbe0f..0000000
--- a/packages/flutter/test/widgets/render_object_element_test.dart
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// @dart = 2.8
-
-import 'package:flutter_test/flutter_test.dart';
-import 'package:flutter/foundation.dart';
-import 'package:flutter/rendering.dart';
-import 'package:flutter/widgets.dart';
-
-@immutable
-class Pair<T> {
- const Pair(this.first, this.second);
- final T first;
- final T second;
-
- @override
- bool operator ==(Object other) {
- return other is Pair<T> && other.first == first && other.second == second;
- }
-
- @override
- int get hashCode => hashValues(first, second);
-
- @override
- String toString() => '($first,$second)';
-}
-
-/// Widget that will layout one child in the top half of this widget's size
-/// and the other child in the bottom half. It will swap which child is on top
-/// and which is on bottom every time the widget is rendered.
-abstract class Swapper extends RenderObjectWidget {
- const Swapper({this.stable, this.swapper});
-
- final Widget stable;
- final Widget swapper;
-
- @override
- SwapperElement createElement();
-
- @override
- RenderObject createRenderObject(BuildContext context) => RenderSwapper();
-}
-
-class SwapperWithProperOverrides extends Swapper {
- const SwapperWithProperOverrides({
- Widget stable,
- Widget swapper,
- }) : super(stable: stable, swapper: swapper);
-
- @override
- SwapperElement createElement() => SwapperElementWithProperOverrides(this);
-}
-
-class SwapperWithNoOverrides extends Swapper {
- const SwapperWithNoOverrides({
- Widget stable,
- Widget swapper,
- }) : super(stable: stable, swapper: swapper);
-
- @override
- SwapperElement createElement() => SwapperElementWithNoOverrides(this);
-}
-
-class SwapperWithDeprecatedOverrides extends Swapper {
- const SwapperWithDeprecatedOverrides({
- Widget stable,
- Widget swapper,
- }) : super(stable: stable, swapper: swapper);
-
- @override
- SwapperElement createElement() => SwapperElementWithDeprecatedOverrides(this);
-}
-
-abstract class SwapperElement extends RenderObjectElement {
- SwapperElement(Swapper widget) : super(widget);
-
- Element stable;
- Element swapper;
- bool swapperIsOnTop = true;
- List<dynamic> insertSlots = <dynamic>[];
- List<Pair<dynamic>> moveSlots = <Pair<dynamic>>[];
- List<dynamic> removeSlots = <dynamic>[];
-
- @override
- Swapper get widget => super.widget as Swapper;
-
- @override
- RenderSwapper get renderObject => super.renderObject as RenderSwapper;
-
- @override
- void visitChildren(ElementVisitor visitor) {
- if (stable != null)
- visitor(stable);
- if (swapper != null)
- visitor(swapper);
- }
-
- @override
- void update(Swapper newWidget) {
- super.update(newWidget);
- _updateChildren(newWidget);
- }
-
- @override
- void mount(Element parent, dynamic newSlot) {
- super.mount(parent, newSlot);
- _updateChildren(widget);
- }
-
- void _updateChildren(Swapper widget) {
- stable = updateChild(stable, widget.stable, 'stable');
- swapper = updateChild(swapper, widget.swapper, swapperIsOnTop);
- swapperIsOnTop = !swapperIsOnTop;
- }
-}
-
-class SwapperElementWithProperOverrides extends SwapperElement {
- SwapperElementWithProperOverrides(Swapper widget) : super(widget);
-
- @override
- void insertRenderObjectChild(RenderBox child, dynamic slot) {
- insertSlots.add(slot);
- assert(child != null);
- if (slot == 'stable')
- renderObject.stable = child;
- else
- renderObject.setSwapper(child, slot as bool);
- }
-
- @override
- void moveRenderObjectChild(RenderBox child, bool oldIsOnTop, bool newIsOnTop) {
- moveSlots.add(Pair<bool>(oldIsOnTop, newIsOnTop));
- assert(oldIsOnTop == !newIsOnTop);
- renderObject.setSwapper(child, newIsOnTop);
- }
-
- @override
- void removeRenderObjectChild(RenderBox child, dynamic slot) {
- removeSlots.add(slot);
- if (slot == 'stable')
- renderObject.stable = null;
- else
- renderObject.setSwapper(null, slot as bool);
- }
-}
-
-class SwapperElementWithNoOverrides extends SwapperElement {
- SwapperElementWithNoOverrides(Swapper widget) : super(widget);
-}
-
-class SwapperElementWithDeprecatedOverrides extends SwapperElement {
- SwapperElementWithDeprecatedOverrides(Swapper widget) : super(widget);
-
- @override
- // ignore: must_call_super
- void insertChildRenderObject(RenderBox child, dynamic slot) {
- insertSlots.add(slot);
- assert(child != null);
- if (slot == 'stable')
- renderObject.stable = child;
- else
- renderObject.setSwapper(child, slot as bool);
- }
-
- @override
- // ignore: must_call_super
- void moveChildRenderObject(RenderBox child, bool isOnTop) {
- moveSlots.add(Pair<bool>(null, isOnTop));
- renderObject.setSwapper(child, isOnTop);
- }
-
- @override
- // ignore: must_call_super
- void removeChildRenderObject(RenderBox child) {
- removeSlots.add(null);
- if (child == renderObject._stable)
- renderObject.stable = null;
- else
- renderObject.setSwapper(null, swapperIsOnTop);
- }
-}
-
-class RenderSwapper extends RenderBox {
- RenderBox _stable;
- RenderBox get stable => _stable;
- set stable(RenderBox child) {
- if (child == _stable)
- return;
- if (_stable != null)
- dropChild(_stable);
- _stable = child;
- if (child != null)
- adoptChild(child);
- }
-
- bool _swapperIsOnTop;
- RenderBox _swapper;
- RenderBox get swapper => _swapper;
- void setSwapper(RenderBox child, bool isOnTop) {
- if (isOnTop != _swapperIsOnTop) {
- _swapperIsOnTop = isOnTop;
- markNeedsLayout();
- }
- if (child == _swapper)
- return;
- if (_swapper != null)
- dropChild(_swapper);
- _swapper = child;
- if (child != null)
- adoptChild(child);
- }
-
- @override
- void visitChildren(RenderObjectVisitor visitor) {
- if (_stable != null)
- visitor(_stable);
- if (_swapper != null)
- visitor(_swapper);
- }
-
- @override
- void attach(PipelineOwner owner) {
- super.attach(owner);
- visitChildren((RenderObject child) => child.attach(owner));
- }
-
- @override
- void detach() {
- super.detach();
- visitChildren((RenderObject child) => child.detach());
- }
-
- @override
- void performLayout() {
- assert(constraints.hasBoundedWidth);
- assert(constraints.hasTightHeight);
- size = constraints.biggest;
- const Offset topOffset = Offset.zero;
- final Offset bottomOffset = Offset(0, size.height / 2);
- final BoxConstraints childConstraints = constraints.copyWith(
- minHeight: constraints.minHeight / 2,
- maxHeight: constraints.maxHeight / 2,
- );
- if (_stable != null) {
- final BoxParentData stableParentData = _stable.parentData as BoxParentData;
- _stable.layout(childConstraints);
- stableParentData.offset = _swapperIsOnTop ? bottomOffset : topOffset;
- }
- if (_swapper != null) {
- final BoxParentData swapperParentData = _swapper.parentData as BoxParentData;
- _swapper.layout(childConstraints);
- swapperParentData.offset = _swapperIsOnTop ? topOffset : bottomOffset;
- }
- }
-
- @override
- void paint(PaintingContext context, Offset offset) {
- visitChildren((RenderObject child) {
- final BoxParentData childParentData = child.parentData as BoxParentData;
- context.paintChild(child, offset + childParentData.offset);
- });
- }
-
- @override
- void redepthChildren() {
- visitChildren((RenderObject child) => redepthChild(child));
- }
-}
-
-BoxParentData parentDataFor(RenderObject renderObject) => renderObject.parentData as BoxParentData;
-
-void main() {
- testWidgets('RenderObjectElement *RenderObjectChild methods get called with correct arguments', (WidgetTester tester) async {
- const Key redKey = ValueKey<String>('red');
- const Key blueKey = ValueKey<String>('blue');
- Widget widget() {
- return SwapperWithProperOverrides(
- stable: ColoredBox(
- key: redKey,
- color: Color(nonconst(0xffff0000)),
- ),
- swapper: ColoredBox(
- key: blueKey,
- color: Color(nonconst(0xff0000ff)),
- ),
- );
- }
-
- await tester.pumpWidget(widget());
- final SwapperElement swapper = tester.element<SwapperElement>(find.byType(SwapperWithProperOverrides));
- final RenderBox redBox = tester.renderObject<RenderBox>(find.byKey(redKey));
- final RenderBox blueBox = tester.renderObject<RenderBox>(find.byKey(blueKey));
- expect(swapper.insertSlots.length, 2);
- expect(swapper.insertSlots, contains('stable'));
- expect(swapper.insertSlots, contains(true));
- expect(swapper.moveSlots, isEmpty);
- expect(swapper.removeSlots, isEmpty);
- expect(parentDataFor(redBox).offset, const Offset(0, 300));
- expect(parentDataFor(blueBox).offset, Offset.zero);
- await tester.pumpWidget(widget());
- expect(swapper.insertSlots.length, 2);
- expect(swapper.moveSlots.length, 1);
- expect(swapper.moveSlots, contains(const Pair<bool>(true, false)));
- expect(swapper.removeSlots, isEmpty);
- expect(parentDataFor(redBox).offset, Offset.zero);
- expect(parentDataFor(blueBox).offset, const Offset(0, 300));
- await tester.pumpWidget(const SwapperWithProperOverrides());
- expect(redBox.attached, false);
- expect(blueBox.attached, false);
- expect(swapper.insertSlots.length, 2);
- expect(swapper.moveSlots.length, 1);
- expect(swapper.removeSlots.length, 2);
- expect(swapper.removeSlots, contains('stable'));
- expect(swapper.removeSlots, contains(false));
- });
-
- testWidgets('RenderObjectElement *RenderObjectChild methods delegate to deprecated methods', (WidgetTester tester) async {
- const Key redKey = ValueKey<String>('red');
- const Key blueKey = ValueKey<String>('blue');
- Widget widget() {
- return SwapperWithDeprecatedOverrides(
- stable: ColoredBox(
- key: redKey,
- color: Color(nonconst(0xffff0000)),
- ),
- swapper: ColoredBox(
- key: blueKey,
- color: Color(nonconst(0xff0000ff)),
- ),
- );
- }
-
- await tester.pumpWidget(widget());
- final SwapperElement swapper = tester.element<SwapperElement>(find.byType(SwapperWithDeprecatedOverrides));
- final RenderBox redBox = tester.renderObject<RenderBox>(find.byKey(redKey));
- final RenderBox blueBox = tester.renderObject<RenderBox>(find.byKey(blueKey));
- expect(swapper.insertSlots.length, 2);
- expect(swapper.insertSlots, contains('stable'));
- expect(swapper.insertSlots, contains(true));
- expect(swapper.moveSlots, isEmpty);
- expect(swapper.removeSlots, isEmpty);
- expect(parentDataFor(redBox).offset, const Offset(0, 300));
- expect(parentDataFor(blueBox).offset, Offset.zero);
- await tester.pumpWidget(widget());
- expect(swapper.insertSlots.length, 2);
- expect(swapper.moveSlots.length, 1);
- expect(swapper.moveSlots, contains(const Pair<bool>(null, false)));
- expect(swapper.removeSlots, isEmpty);
- expect(parentDataFor(redBox).offset, Offset.zero);
- expect(parentDataFor(blueBox).offset, const Offset(0, 300));
- await tester.pumpWidget(const SwapperWithDeprecatedOverrides());
- expect(redBox.attached, false);
- expect(blueBox.attached, false);
- expect(swapper.insertSlots.length, 2);
- expect(swapper.moveSlots.length, 1);
- expect(swapper.removeSlots.length, 2);
- expect(swapper.removeSlots, <bool>[null,null]);
- });
-
- testWidgets('RenderObjectElement *ChildRenderObject methods fail with deprecation message', (WidgetTester tester) async {
- const Key redKey = ValueKey<String>('red');
- const Key blueKey = ValueKey<String>('blue');
- Widget widget() {
- return SwapperWithNoOverrides(
- stable: ColoredBox(
- key: redKey,
- color: Color(nonconst(0xffff0000)),
- ),
- swapper: ColoredBox(
- key: blueKey,
- color: Color(nonconst(0xff0000ff)),
- ),
- );
- }
-
- await tester.pumpWidget(widget());
- final FlutterError error = tester.takeException() as FlutterError;
- final ErrorSummary summary = error.diagnostics.first as ErrorSummary;
- expect(summary.toString(), contains('deprecated'));
- });
-}