How to go to a specific page using flutter_local_notifications.?

Viewed 175

I am trying to navigate to a specific page using local notification, the moment the user touches the notification, below I leave the code of how I am doing it, basically, the problem is when onSelectNotification is called everything that is before is executed but Once Navigator.push is called, it does not go to the screen that I tell it and it does not raise any exceptions and what is after is not executed either.

  /// Allows you to navigate to a specific screen from the notification
  Future onSelectNotification(String payload) async {
    if (payload != null) {
      debugPrint('Notification payload: $payload');//it shows
    }
    await Navigator.push(context, MaterialPageRoute(builder: (context) => AnyScreen()));
    debugPrint("go to AnyScreen");//does not show it
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    /// local notication inicialization
    const AndroidNotificationChannel channel = AndroidNotificationChannel(
      'high_importance_channel', // id
      'High Importance Notifications', // title
      'This channel is used for important notifications.', // description
      importance: Importance.max,
    );

    FlutterLocalNotificationsPlugin flip =
        new FlutterLocalNotificationsPlugin();

    flip
        .resolvePlatformSpecificImplementation<
            AndroidFlutterLocalNotificationsPlugin>()
        ?.createNotificationChannel(channel);
    const AndroidInitializationSettings android =
        AndroidInitializationSettings('app_icon');

    final IOSInitializationSettings iOS = IOSInitializationSettings();

    final MacOSInitializationSettings macOS = MacOSInitializationSettings();

    final InitializationSettings initializationSettings =
        InitializationSettings(android: android, iOS: iOS, macOS: macOS);
    flip.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);

    /// listen when the app is open
    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      RemoteNotification notification = message.notification;
      AndroidNotification android = message.notification?.android;

      // If `onMessage` is triggered with a notification, construct our own
      // local notification to show to users using the created channel.
      if (notification != null && android != null) {
        flip.show(
            notification.hashCode,
            notification.title,
            notification.body,
            NotificationDetails(
              android: AndroidNotificationDetails(
                  channel.id, channel.name, channel.description,
                  icon: android?.smallIcon,
                  // other properties...
                  priority: Priority.high),
            ));
      }
    });
  }
...
0 Answers
Related