Unverified Commit cd94cd88 authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

SliverOffstage Fix (#45580)

parent a2c3f6c5
...@@ -2124,7 +2124,14 @@ class RenderSliverOffstage extends RenderSliver with RenderObjectWithChildMixin< ...@@ -2124,7 +2124,14 @@ class RenderSliverOffstage extends RenderSliver with RenderObjectWithChildMixin<
void performLayout() { void performLayout() {
assert(child != null); assert(child != null);
child.layout(constraints, parentUsesSize: true); child.layout(constraints, parentUsesSize: true);
if (!offstage)
geometry = child.geometry; geometry = child.geometry;
else
geometry = const SliverGeometry(
scrollExtent: 0.0,
visible: false,
maxPaintExtent: 0.0,
);
} }
@override @override
...@@ -2159,7 +2166,7 @@ class RenderSliverOffstage extends RenderSliver with RenderObjectWithChildMixin< ...@@ -2159,7 +2166,7 @@ class RenderSliverOffstage extends RenderSliver with RenderObjectWithChildMixin<
void paint(PaintingContext context, Offset offset) { void paint(PaintingContext context, Offset offset) {
if (offstage) if (offstage)
return; return;
super.paint(context, offset); context.paintChild(child, offset);
} }
@override @override
......
...@@ -454,6 +454,10 @@ void main() { ...@@ -454,6 +454,10 @@ void main() {
expect(semantics.nodesWith(label: 'a'), hasLength(0)); expect(semantics.nodesWith(label: 'a'), hasLength(0));
expect(find.byType(Text), findsNothing); expect(find.byType(Text), findsNothing);
final RenderViewport renderViewport = tester.renderObject(find.byType(Viewport));
final RenderSliver renderSliver = renderViewport.lastChild;
expect(renderSliver.geometry.scrollExtent, 0.0);
expect(find.byType(SliverOffstage), findsNothing);
}); });
testWidgets('offstage false', (WidgetTester tester) async { testWidgets('offstage false', (WidgetTester tester) async {
...@@ -469,6 +473,10 @@ void main() { ...@@ -469,6 +473,10 @@ void main() {
expect(semantics.nodesWith(label: 'a'), hasLength(1)); expect(semantics.nodesWith(label: 'a'), hasLength(1));
expect(find.byType(Text), findsOneWidget); expect(find.byType(Text), findsOneWidget);
final RenderViewport renderViewport = tester.renderObject(find.byType(Viewport));
final RenderSliver renderSliver = renderViewport.lastChild;
expect(renderSliver.geometry.scrollExtent, 14.0);
expect(find.byType(SliverOffstage), paints..paragraph());
}); });
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment