Flutter - 如何在应用程序关闭时导航通知

Flutter - How to navigate on notification when app is closed

应用关闭时打开通知时如何在 flutter 中导航?

这是我从主函数调用的代码:

final FirebaseMessaging _fcm = FirebaseMessaging.instance;
_fcm.getInitialMessage().then((RemoteMessage message) { 
  if (message != null && message.data != null) {
      Keys.navKey.currentState.pushNamed(Routes.messageDetail);
  } 
}); 

在我的 main.dart 中,我设置了 MaterialApp 的 navigatorKey:

 MaterialApp(
          navigatorKey: Keys.navKey,)

而navKey是一个静态变量:

class Keys {
  static final navKey = new GlobalKey<NavigatorState>();
}

如果我在应用程序关闭时打开通知,我会收到此错误:

NoSuchMethodError: The method 'pushNamed' was called on null. Receiver: null Tried calling: pushNamed("MESSAGEDETAIL")

我可以使用导航键在应用中的其他地方导航。

是否有其他方法可以做到这一点,或者我怎样才能确保 navigationKey 已初始化?

使用FirebaseMessaging.instance.getInitialMessage()在后台处理消息

示例:

void handleMessageOnBackground() {
    FirebaseMessaging.instance.getInitialMessage().then(
      (remoteMessage) {
        if (remoteMessage != null) {
          String payload = json.encode(remoteMessage.data);
          //navigator two orther screen
        }
      },
    );
  }

并在 home_screen.dart 中初始化 handleMessageOnBackground() ,而不是 main.dart

main.dart > splash_screen > home_screen