gpt4 book ai didi

android - navigatorKey.currentContext 始终为 Null

转载 作者:行者123 更新时间:2023-12-05 04:37:49 31 4
gpt4 key购买 nike

我想在收到 FCM 后台消息时切换到屏幕。但是对于这个 context 是必需的,我在 FirebaseBackgroundMessageHandler 中肯定没有,所以在互联网上搜索后我发现我可以从 获取当前上下文NavigatorKey 所以我创建了这个全局变量:

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

这是我的 Material 应用程序:

runApp(GetMaterialApp(
navigatorKey: navigatorKey,
home: const MyHomePage(),));

现在,每当我收到背景消息时,我都会尝试切换到所需的屏幕,但我总是得到空上下文,因此无法 Push。通过 GetX 导航也会引发错误。我错过了什么?请帮助!!!!

Firebase 后台处理程序:

Future<dynamic> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
if(message.data['test'] == '123'){
Navigator.of(navigatorKey.currentContext!).push(MaterialPageRoute(builder: (context) =>const Wallet()));
}
}

最佳答案

根据documentation Firebase 背景消息:

Since the handler runs in its own isolate outside your applications context, it is not possible to update application state or execute any UI impacting logic. You can however perform logic such as HTTP requests, IO operations (updating local storage), communicate with other plugins etc.

因此,如果您的应用程序在后台运行,您将无法以您希望的方式启动导航。如果您向用户显示通知,用户可以决定点击它,然后您可以使用 FirebaseMessaging.onMessageOpenedApp。在此处理程序中,您将能够处理导航。

关于android - navigatorKey.currentContext 始终为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70662344/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com