【问题标题】:unable to navigate to particular screen on push notification click when app is killed(Flutter android)当应用程序被杀死时,无法在推送通知单击时导航到特定屏幕(Flutter android)
【发布时间】:2021-08-02 14:03:10
【问题描述】:

我在我的颤振应用程序中使用 Firebase 云消息传递。单击推送通知时,我无法导航到特定屏幕。 当应用程序在前台并且应用程序在后台时,它可以正常工作,但在应用程序被杀死时就不行了。

代码:

class FcmHelper {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
  new FlutterLocalNotificationsPlugin();
  void initializeFcm() {
    var initializationSettingsAndroid =
    new AndroidInitializationSettings('@mipmap/ic_launcher');


    flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);

    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) {      
        displayNotification(message);
        return;
      },
      onResume: (Map<String, dynamic> message) {
        displayNotification(message);
        return;
      },
      onLaunch: (Map<String, dynamic> message) {
        displayNotification(message);
        return;
      },

    );
 
  }


  Future displayNotification(Map<String, dynamic> message) async {
    // display notification
  }

  Future onSelectNotification(String payload) async {
    try {
      await flutterLocalNotificationsPlugin.cancelAll();
      var tripDetails = HotelBookingDetails(
          );
      Navigator.pushAndRemoveUntil(
          GlobalVariable.navState.currentContext,
          MaterialPageRoute(builder: (context) => tripDetails),
          ModalRoute.withName('/'));
    } catch (e, s) {
      debugPrint(e.toString());
    }
  }

}

【问题讨论】:

  • 请在此处粘贴相关代码

标签: flutter firebase-cloud-messaging


【解决方案1】:
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage message) {
    // add your condition if any
    Navigator.of(context).pushNamedAndRemoveUntil("/notifications", (route) => route.settings.name == "/notifications" ? false : true);
});

【讨论】:

    【解决方案2】:
    final noti = FirebaseMessaging.instance.getInitialMessage();
    

    您在初始屏幕中实现此功能并转到您想要的屏幕

    【讨论】:

      【解决方案3】:

      onLaunch 回调将在 FirebaseMessaging 初始化后触发, 也许你可以像这样使用navigatorKey 导航

            GlobalVariable.navState.currentState.push(
                              MaterialPageRoute(
                                builder: (_) => YourPage(),
                              ),
                            );
      

      如果在上下文可用时尝试初始化 FirebaseMessaging 没有帮助,可能在 MateriApp 构建器方法中

      MaterialApp(
        builder: (context, widget) {
           FcmHelper().initializeFcm();
         }
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 2022-01-22
        • 2017-04-12
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 2018-12-20
        相关资源
        最近更新 更多