mirror of
https://github.com/flutter/flutter
synced 2024-09-13 13:21:36 +00:00
Fix (insert|move|remove)RenderObjectChild methods in base class (#123276)
This commit is contained in:
parent
31798757e7
commit
7f41ab25c9
|
@ -856,7 +856,7 @@ class _CupertinoDialogRenderElement extends RenderObjectElement {
|
||||||
@override
|
@override
|
||||||
void moveRenderObjectChild(RenderObject child, _AlertDialogSections oldSlot, _AlertDialogSections newSlot) {
|
void moveRenderObjectChild(RenderObject child, _AlertDialogSections oldSlot, _AlertDialogSections newSlot) {
|
||||||
if (!allowMoveRenderObjectChild) {
|
if (!allowMoveRenderObjectChild) {
|
||||||
super.moveRenderObjectChild(child, oldSlot, newSlot);
|
assert(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6290,30 +6290,7 @@ abstract class RenderObjectElement extends Element {
|
||||||
/// [IndexedSlot] is a convenient value for the slot.
|
/// [IndexedSlot] is a convenient value for the slot.
|
||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
@protected
|
@protected
|
||||||
void insertRenderObjectChild(covariant RenderObject child, covariant Object? slot) {
|
void insertRenderObjectChild(covariant RenderObject child, covariant Object? 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().',
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Move the given child from the given old slot to the given new slot.
|
/// Move the given child from the given old slot to the given new slot.
|
||||||
///
|
///
|
||||||
|
@ -6330,60 +6307,14 @@ abstract class RenderObjectElement extends Element {
|
||||||
/// compared against each other for the purposes of updating one slot with the
|
/// compared against each other for the purposes of updating one slot with the
|
||||||
/// element from another slot) would never call this.
|
/// element from another slot) would never call this.
|
||||||
@protected
|
@protected
|
||||||
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) {
|
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().',
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Remove the given child from [renderObject].
|
/// Remove the given child from [renderObject].
|
||||||
///
|
///
|
||||||
/// The given child is guaranteed to have been inserted at the given `slot`
|
/// The given child is guaranteed to have been inserted at the given `slot`
|
||||||
/// and have [renderObject] as its parent.
|
/// and have [renderObject] as its parent.
|
||||||
@protected
|
@protected
|
||||||
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot) {
|
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot);
|
||||||
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().',
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||||
|
|
|
@ -2119,6 +2119,15 @@ class FakeLeafRenderObject extends RenderBox {
|
||||||
|
|
||||||
class TestRenderObjectElement extends RenderObjectElement {
|
class TestRenderObjectElement extends RenderObjectElement {
|
||||||
TestRenderObjectElement() : super(Table());
|
TestRenderObjectElement() : super(Table());
|
||||||
|
|
||||||
|
@override
|
||||||
|
void insertRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
class _EmptyWidget extends Widget {
|
class _EmptyWidget extends Widget {
|
||||||
|
|
|
@ -66,6 +66,15 @@ class _TestElement extends RootRenderObjectElement{
|
||||||
mount(null, null);
|
mount(null, null);
|
||||||
deactivate();
|
deactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void insertRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
class _TestRenderObject extends RenderObject {
|
class _TestRenderObject extends RenderObject {
|
||||||
|
|
|
@ -105,6 +105,15 @@ abstract class SwapperElement extends RenderObjectElement {
|
||||||
swapper = updateChild(swapper, widget.swapper, swapperIsOnTop);
|
swapper = updateChild(swapper, widget.swapper, swapperIsOnTop);
|
||||||
swapperIsOnTop = !swapperIsOnTop;
|
swapperIsOnTop = !swapperIsOnTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void insertRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
class SwapperElementWithProperOverrides extends SwapperElement {
|
class SwapperElementWithProperOverrides extends SwapperElement {
|
||||||
|
@ -288,26 +297,4 @@ void main() {
|
||||||
expect(swapper.removeSlots, contains('stable'));
|
expect(swapper.removeSlots, contains('stable'));
|
||||||
expect(swapper.removeSlots, contains(false));
|
expect(swapper.removeSlots, contains(false));
|
||||||
});
|
});
|
||||||
|
|
||||||
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'));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,15 @@ class _TestElement extends RootRenderObjectElement{
|
||||||
mount(null, null);
|
mount(null, null);
|
||||||
deactivate();
|
deactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void insertRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void moveRenderObjectChild(covariant RenderObject child, covariant Object? oldSlot, covariant Object? newSlot) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void removeRenderObjectChild(covariant RenderObject child, covariant Object? slot) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MyStatefulWidget extends StatefulWidget {
|
class _MyStatefulWidget extends StatefulWidget {
|
||||||
|
|
Loading…
Reference in a new issue