diff --git a/packages/flutter/lib/src/rendering/sliver.dart b/packages/flutter/lib/src/rendering/sliver.dart index 9c8d45ba37..a1dee0ba25 100644 --- a/packages/flutter/lib/src/rendering/sliver.dart +++ b/packages/flutter/lib/src/rendering/sliver.dart @@ -951,14 +951,14 @@ abstract class RenderSliver extends RenderObject { case Axis.horizontal: return new Rect.fromLTWH( 0.0, 0.0, + geometry.paintExtent, constraints.crossAxisExtent, - geometry.paintExtent ); case Axis.vertical: return new Rect.fromLTWH( 0.0, 0.0, + constraints.crossAxisExtent, geometry.paintExtent, - constraints.crossAxisExtent ); } return null; diff --git a/packages/flutter/test/rendering/slivers_test.dart b/packages/flutter/test/rendering/slivers_test.dart index 09138e94b6..1fbfde0a1f 100644 --- a/packages/flutter/test/rendering/slivers_test.dart +++ b/packages/flutter/test/rendering/slivers_test.dart @@ -678,4 +678,46 @@ void main() { ), ); }); + + test('Sliver paintBounds and semanticBounds - vertical', () { + const double height = 150.0; + + final RenderSliver sliver = new RenderSliverToBoxAdapter( + child: new RenderSizedBox(const Size(400.0, height)), + ); + final RenderViewport root = new RenderViewport( + axisDirection: AxisDirection.down, + offset: new ViewportOffset.zero(), + children: [ + sliver, + ], + ); + layout(root); + + final Rect expectedRect = new Rect.fromLTWH(0.0, 0.0, root.size.width, height); + + expect(sliver.paintBounds, expectedRect); + expect(sliver.semanticBounds, expectedRect); + }); + + test('Sliver paintBounds and semanticBounds - horizontal', () { + const double width = 150.0; + + final RenderSliver sliver = new RenderSliverToBoxAdapter( + child: new RenderSizedBox(const Size(width, 400.0)), + ); + final RenderViewport root = new RenderViewport( + axisDirection: AxisDirection.right, + offset: new ViewportOffset.zero(), + children: [ + sliver, + ], + ); + layout(root); + + final Rect expectedRect = new Rect.fromLTWH(0.0, 0.0, width, root.size.height); + + expect(sliver.paintBounds, expectedRect); + expect(sliver.semanticBounds, expectedRect); + }); }