当应用程序在 Flutter 中处于终止状态时,如何在点击 Firebase 推送通知时导航到特定屏幕?

问题描述 投票:0回答:1

为了在应用程序终止时导航到特定屏幕,我使用了 getInitialMessage 方法并调用了名为 _handleMessage 的函数。 但导航没有发生。 当应用程序终止时,我应该使用 onSelectNotification 方法进行导航吗?

为了在应用程序终止时导航到特定屏幕,我使用了 getInitialMessage 方法并调用了名为 _handleMessage 的函数。 但导航没有发生。 当应用程序终止时,我应该使用 onSelectNotification 方法进行导航吗? void configLocalNotification() 异步 {

    getIt.registerSingleton<SharedPreferences>(
        await SharedPreferences.getInstance());
    FirebaseMessaging.instance
        .getInitialMessage()
        .then((RemoteMessage? message) async {
      // SharedPreferences shared = await SharedPreferences.getInstance();
      // String? token = await getIt<SharedPreferences>().getString("token");
      if (message != null) {
        _handleMessage(message);
      }
    });

    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) async {
      _handleMessage(message);
    });
    AndroidInitializationSettings initializationSettingsAndroid =
        AndroidInitializationSettings('@mipmap/ic_launcher');
    DarwinInitializationSettings initializationSettingsIOS =
        DarwinInitializationSettings();
    InitializationSettings initializationSettings = InitializationSettings(
        android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
    flutterLocalNotificationsPlugin.initialize(
      initializationSettings,
    );
  }
//   static Future<void> initialize(FlutterLocalNotificationsPlugin flutterlocalplugin)async{
//   flutterlocalplugin.initialize(initializationSettings,on)
// }

  //show notification

  void _handleMessage(RemoteMessage message) {
    if (message.data != null || message.data["entityid"] != null) {
      bool checkid = true;
      getIt<SharedPreferences>().setBool('checkId', checkid);

      String entityid = message.data['entityid'];
      getIt<SharedPreferences>().setString('entityid', entityid);

      if (message.data['module'] == 'Invoices' &&
          message.data['target'] != null) {
        String targetid = message.data['target'];
        getIt<SharedPreferences>().setString('targetid', targetid);
        bool checkid = true;

        navigatorKey.currentState!.pushNamed(upcomingDetails);
      } else if (message.data['module'] == 'Invoices' &&
          message.data['entityid'] != null &&
          message.data['target'] == null) {
        String entityid = message.data['entityid'];

        navigatorKey.currentState!.pushNamed(landing);

        var targetid = null;
        getIt<SharedPreferences>().setString('targetid', targetid);
      }

      // else if (message.data['module'] == 'Invoices' &&
      //     message.data['target'] == null) {
      //   navigatorKey.currentState!.pushNamed(InvoiceScreen);
      // }
      else if (message.data['module'] == 'Payments') {
        navigatorKey.currentState!.pushNamed(totalPayment);
      } else if (message.data['module'] == 'KYC' &&
          message.data['entityid'] != null) {
        String entityid = message.data['entityid'];

        getIt<SharedPreferences>().setString('companyId', entityid);

        navigatorKey.currentState!.pushNamed(kycVerification);
      } else if (message.data['module'] == 'Entities') {
        navigatorKey.currentState!.pushNamed(InvoiceScreen);
      }
    }
  }
android flutter dart push-notification firebase-cloud-messaging
1个回答
0
投票

FirebaseMessaging.instance.getInitialMessage().then((消息) {

您的代码

});
© www.soinside.com 2019 - 2024. All rights reserved.