@@ -2158,4 +2158,41 @@ void main() {
21582158 await tester.drag (find.text ('b' ), const Offset (0 , 200 ));
21592159 await tester.pumpAndSettle ();
21602160 }, variant: const TargetPlatformVariant (< TargetPlatform > { TargetPlatform .iOS, TargetPlatform .macOS }));
2161+
2162+ testWidgets ('Viewport describeApproximateClip respects clipBehavior' , (WidgetTester tester) async {
2163+ await tester.pumpWidget (const Directionality (
2164+ textDirection: TextDirection .ltr,
2165+ child: CustomScrollView (
2166+ clipBehavior: Clip .none,
2167+ slivers: < Widget > [
2168+ SliverToBoxAdapter (child: SizedBox (width: 20 , height: 20 )),
2169+ ]
2170+ ),
2171+ ));
2172+ RenderViewport viewport = tester.allRenderObjects.whereType <RenderViewport >().first;
2173+ expect (viewport.clipBehavior, Clip .none);
2174+ bool visited = false ;
2175+ viewport.visitChildren ((RenderObject child) {
2176+ visited = true ;
2177+ expect (viewport.describeApproximatePaintClip (child as RenderSliver ), null );
2178+ });
2179+ expect (visited, true );
2180+
2181+ await tester.pumpWidget (const Directionality (
2182+ textDirection: TextDirection .ltr,
2183+ child: CustomScrollView (
2184+ slivers: < Widget > [
2185+ SliverToBoxAdapter (child: SizedBox (width: 20 , height: 20 )),
2186+ ]
2187+ ),
2188+ ));
2189+ viewport = tester.allRenderObjects.whereType <RenderViewport >().first;
2190+ expect (viewport.clipBehavior, Clip .hardEdge);
2191+ visited = false ;
2192+ viewport.visitChildren ((RenderObject child) {
2193+ visited = true ;
2194+ expect (viewport.describeApproximatePaintClip (child as RenderSliver ), Offset .zero & viewport.size);
2195+ });
2196+ expect (visited, true );
2197+ });
21612198}
0 commit comments