moveRenderObjectChild method Null safety
- covariant RenderObject child,
- covariant Object? oldSlot,
- covariant Object? newSlot
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.
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
element has a list of children, the previous sibling element wrapped in an
IndexedSlot is a convenient value for the slot.
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.
Implementation
@protected
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) {
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().',
),
]);
}());
}