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

Jsp*_*spr 3 dart firebase flutter

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

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

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

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

 MaterialApp(
          navigatorKey: Keys.navKey,)
Run Code Online (Sandbox Code Playgroud)

navKey 是一个静态变量:

class Keys {
  static final navKey = new GlobalKey<NavigatorState>();
}
Run Code Online (Sandbox Code Playgroud)

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

NoSuchMethodError:在 null 上调用了方法“pushNamed”。接收者:null 尝试调用:pushNamed("MESSAGEDETAIL")

我可以使用导航键在应用程序中的其他位置导航。

还有其他方法可以做到这一点或者如何确保 navigationKey 已初始化?

Xuu*_*huc 7

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

例子:

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

并且 init handleMessageOnBackground()home_screen.dart而不是main.dart

main.dart>>splash_screenhome_screen