@@ -351,6 +351,10 @@ void main() {
351
351
await tester.pumpAndSettle ();
352
352
expect (find.text ('route' ), findsOneWidget);
353
353
expect (find.text ('push' ), findsNothing);
354
+ expect (
355
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
356
+ false ,
357
+ );
354
358
});
355
359
356
360
testWidgets ('Fullscreen route animates correct transform values over time' , (WidgetTester tester) async {
@@ -536,6 +540,10 @@ void main() {
536
540
await tester.pump ();
537
541
expect (tester.getTopLeft (find.text ('1' )).dx, moreOrLessEquals (- 233 , epsilon: 1 ));
538
542
expect (tester.getTopLeft (find.text ('2' )).dx, moreOrLessEquals (100 ));
543
+ expect (
544
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
545
+ true ,
546
+ );
539
547
540
548
await swipeGesture.moveBy (const Offset (100 , 0 ));
541
549
await tester.pump ();
@@ -576,6 +584,10 @@ void main() {
576
584
await tester.pump ();
577
585
expect (tester.getTopLeft (find.text ('1' )).dx, moreOrLessEquals (- 100 ));
578
586
expect (tester.getTopLeft (find.text ('2' )).dx, moreOrLessEquals (500 ));
587
+ expect (
588
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
589
+ true ,
590
+ );
579
591
580
592
await tester.pump (const Duration (milliseconds: 50 ));
581
593
expect (tester.getTopLeft (find.text ('1' )).dx, moreOrLessEquals (- 19 , epsilon: 1 ));
@@ -585,6 +597,12 @@ void main() {
585
597
// Rate of change is slowing down.
586
598
expect (tester.getTopLeft (find.text ('1' )).dx, moreOrLessEquals (- 4 , epsilon: 1 ));
587
599
expect (tester.getTopLeft (find.text ('2' )).dx, moreOrLessEquals (787 , epsilon: 1 ));
600
+
601
+ await tester.pumpAndSettle ();
602
+ expect (
603
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
604
+ false ,
605
+ );
588
606
});
589
607
590
608
testWidgets ('Snapped drags forwards and backwards should signal didStart/StopUserGesture' , (WidgetTester tester) async {
@@ -667,12 +685,63 @@ void main() {
667
685
final TestGesture gesture = await tester.startGesture (const Offset (5 , 200 ));
668
686
// The width of the page.
669
687
await gesture.moveBy (const Offset (800 , 0 ));
688
+ verify (navigatorObserver.didStartUserGesture (any, any)).called (1 );
670
689
await gesture.up ();
671
690
await tester.pump ();
672
691
673
692
expect (find.text ('Page 1' ), isOnstage);
674
693
expect (find.text ('Page 2' ), findsNothing);
675
694
verify (navigatorObserver.didPop (any, any)).called (1 );
695
+ verify (navigatorObserver.didStopUserGesture ()).called (1 );
696
+ });
697
+
698
+ testWidgets ('test edge swipe then drop back at starting point works' , (WidgetTester tester) async {
699
+ await tester.pumpWidget (
700
+ CupertinoApp (
701
+ navigatorObservers: < NavigatorObserver > [navigatorObserver],
702
+ onGenerateRoute: (RouteSettings settings) {
703
+ return CupertinoPageRoute <void >(
704
+ settings: settings,
705
+ builder: (BuildContext context) {
706
+ final String pageNumber = settings.name == '/' ? '1' : '2' ;
707
+ return Center (child: Text ('Page $pageNumber ' ));
708
+ },
709
+ );
710
+ },
711
+ ),
712
+ );
713
+
714
+ tester.state <NavigatorState >(find.byType (Navigator )).pushNamed ('/next' );
715
+
716
+ await tester.pump ();
717
+ await tester.pump (const Duration (seconds: 1 ));
718
+
719
+ expect (find.text ('Page 1' ), findsNothing);
720
+ expect (find.text ('Page 2' ), isOnstage);
721
+
722
+ final TestGesture gesture = await tester.startGesture (const Offset (5 , 200 ));
723
+ // Move right a bit
724
+ await gesture.moveBy (const Offset (300 , 0 ));
725
+ verify (navigatorObserver.didStartUserGesture (any, any)).called (1 );
726
+ expect (
727
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
728
+ true ,
729
+ );
730
+ await tester.pump ();
731
+
732
+ // Move back to where we started.
733
+ await gesture.moveBy (const Offset (- 300 , 0 ));
734
+ await gesture.up ();
735
+ await tester.pump ();
736
+
737
+ expect (find.text ('Page 1' ), findsNothing);
738
+ expect (find.text ('Page 2' ), isOnstage);
739
+ verifyNever (navigatorObserver.didPop (any, any));
740
+ verify (navigatorObserver.didStopUserGesture ()).called (1 );
741
+ expect (
742
+ tester.state <NavigatorState >(find.byType (Navigator )).userGestureInProgress,
743
+ false ,
744
+ );
676
745
});
677
746
}
678
747
0 commit comments