@@ -7,13 +7,53 @@ import 'package:flutter/material.dart';
77import 'package:flutter_test/flutter_test.dart' ;
88import 'package:go_router/go_router.dart' ;
99
10+ import 'test_helpers.dart' ;
11+
1012// Regression test for https://github.com/flutter/flutter/issues/120353
1113void main () {
1214 group ('iOS back gesture inside a StatefulShellRoute' , () {
13- Future <void > backGesture (WidgetTester tester) async {
14- await tester.dragFrom (const Offset (0 , 300 ), const Offset (500 , 300 ));
15- }
15+ testWidgets ('pops the top sub-route '
16+ 'when there is an active sub-route' , (WidgetTester tester) async {
17+ debugDefaultTargetPlatformOverride = TargetPlatform .iOS;
18+
19+ await tester.pumpWidget (const _TestApp ());
20+ expect (find.text ('Home' ), findsOneWidget);
21+
22+ await tester.tap (find.byType (FilledButton ));
23+ await tester.pumpAndSettle ();
24+ expect (find.text ('Post' ), findsOneWidget);
25+
26+ await tester.tap (find.byType (FilledButton ));
27+ await tester.pumpAndSettle ();
28+ expect (find.text ('Comment' ), findsOneWidget);
29+
30+ await simulateIosBackGesture (tester);
31+ await tester.pumpAndSettle ();
32+ expect (find.text ('Post' ), findsOneWidget);
33+
34+ debugDefaultTargetPlatformOverride = null ;
35+ });
36+
37+ testWidgets ('pops StatefulShellRoute '
38+ 'when there are no active sub-routes' , (WidgetTester tester) async {
39+ debugDefaultTargetPlatformOverride = TargetPlatform .iOS;
40+
41+ await tester.pumpWidget (const _TestApp ());
42+ expect (find.text ('Home' ), findsOneWidget);
43+
44+ await tester.tap (find.byType (FilledButton ));
45+ await tester.pumpAndSettle ();
46+ expect (find.text ('Post' ), findsOneWidget);
47+
48+ await simulateIosBackGesture (tester);
49+ await tester.pumpAndSettle ();
50+ expect (find.text ('Home' ), findsOneWidget);
51+
52+ debugDefaultTargetPlatformOverride = null ;
53+ });
54+ });
1655
56+ group ('Android back button inside a StatefulShellRoute' , () {
1757 testWidgets ('pops the top sub-route '
1858 'when there is an active sub-route' , (WidgetTester tester) async {
1959 debugDefaultTargetPlatformOverride = TargetPlatform .iOS;
@@ -29,7 +69,7 @@ void main() {
2969 await tester.pumpAndSettle ();
3070 expect (find.text ('Comment' ), findsOneWidget);
3171
32- await backGesture (tester);
72+ await simulateAndroidBackButton (tester);
3373 await tester.pumpAndSettle ();
3474 expect (find.text ('Post' ), findsOneWidget);
3575
@@ -47,7 +87,7 @@ void main() {
4787 await tester.pumpAndSettle ();
4888 expect (find.text ('Post' ), findsOneWidget);
4989
50- await backGesture (tester);
90+ await simulateAndroidBackButton (tester);
5191 await tester.pumpAndSettle ();
5292 expect (find.text ('Home' ), findsOneWidget);
5393
0 commit comments