@@ -7,13 +7,53 @@ import 'package:flutter/material.dart';
7
7
import 'package:flutter_test/flutter_test.dart' ;
8
8
import 'package:go_router/go_router.dart' ;
9
9
10
+ import 'test_helpers.dart' ;
11
+
10
12
// Regression test for https://github.com/flutter/flutter/issues/120353
11
13
void main () {
12
14
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
+ });
16
55
56
+ group ('Android back button inside a StatefulShellRoute' , () {
17
57
testWidgets ('pops the top sub-route '
18
58
'when there is an active sub-route' , (WidgetTester tester) async {
19
59
debugDefaultTargetPlatformOverride = TargetPlatform .iOS;
@@ -29,7 +69,7 @@ void main() {
29
69
await tester.pumpAndSettle ();
30
70
expect (find.text ('Comment' ), findsOneWidget);
31
71
32
- await backGesture (tester);
72
+ await simulateAndroidBackButton (tester);
33
73
await tester.pumpAndSettle ();
34
74
expect (find.text ('Post' ), findsOneWidget);
35
75
@@ -47,7 +87,7 @@ void main() {
47
87
await tester.pumpAndSettle ();
48
88
expect (find.text ('Post' ), findsOneWidget);
49
89
50
- await backGesture (tester);
90
+ await simulateAndroidBackButton (tester);
51
91
await tester.pumpAndSettle ();
52
92
expect (find.text ('Home' ), findsOneWidget);
53
93
0 commit comments