Skip to content

RouteObserver/NavigatorObserver.didPop no longer called on iOS back swipe #29596

@1AlexFix1

Description

@1AlexFix1

Hello, on master, deb, beta channel didPop no calls, it is bad, because need check screen pop,

final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();

class _BaseWidgetState extends State<BaseWidget>
    with RouteAware, WidgetsBindingObserver {

@override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

@override
  void didChangeDependencies() {
    super.didChangeDependencies();
    routeObserver.subscribe(this, ModalRoute.of(context));
  }

  @override
  void didPushNext() {
    super.didPushNext();
    print('didPushNext');
    if (widget.pushNext != null) widget.pushNext();
  }

  @override
  void didPop() {
    super.didPop();
    print('didPop');
    if (widget.pop != null) widget.pop();
  }

  @override
  void didPopNext() {
    super.didPopNext();
    print('didPopNext');
    if (widget.popNext != null) widget.popNext();
  }

  @override
  void didPush() {
    super.didPush();
    print('didPush');
    if (widget.push != null) widget.push();
  }

  @override
  void dispose() {
    routeObserver.unsubscribe(this);
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

}

I test channel

  1. stable
    //push next screen
    flutter: didPushNext
    flutter: didPush
    -----swipe screen(iOS)
    flutter: didPopNext
    flutter: didPop
    -----touch back button (Android)
    flutter: didPopNext
    flutter: didPop

test: successful

  1. master
    //push next screen
    flutter: didPushNext
    flutter: didPush
    -----swipe screen(iOS)
    no reaction!!!
    -----touch back button (Android)
    flutter: didPopNext
    flutter: didPop

  2. dev
    //push next screen
    flutter: didPushNext
    flutter: didPush
    ----- swipe screen(iOS)
    no reaction!!!
    -----touch back button (Android)
    flutter: didPopNext
    flutter: didPop

  3. beta
    //push next screen
    flutter: didPushNext
    flutter: didPush
    -----swipe screen(iOS)
    no reaction!!!
    -----touch back button (Android)
    flutter: didPopNext
    flutter: didPop

Flutter 1.3.12-pre.29 • channel master • https://github.com/flutter/flutter.git
Framework • revision af6e09f (34 hours ago) • 2019-03-18 21:40:21 -0700
Engine • revision 5088735
Tools • Dart 2.2.1 (build 2.2.1-dev.1.0 None)

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.3.14-pre.7, on Mac OS X 10.14.3 18D109, locale ru-RU)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.3)
[✓] Connected device (1 available)

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: regressionIt was better in the past than it is nowf: cupertinoflutter/packages/flutter/cupertino repositoryf: routesNavigator, Router, and related APIs.frameworkflutter/packages/flutter repository. See also f: labels.platform-iosiOS applications specificallywaiting for PR to land (fixed)A fix is in flight

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions