navigatorKey.currentContext 始终为 Null

2024-01-08

我想在收到 FCM 后台消息时切换到屏幕。但对于这个context是必需的,但我里面绝对没有FirebaseBackgroundMessageHandler所以在网上搜索后我发现我可以从NavigatorKey所以我创建了这个全局变量:

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

这在我的材料应用程序上:

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()));
  }
}

根据文档 https://firebase.flutter.dev/docs/messaging/usage/#background-messagesFirebase 后台消息:

由于处理程序在应用程序上下文之外以自己的隔离方式运行,因此无法更新应用程序状态或执行任何影响 UI 的逻辑。但是,您可以执行 HTTP 请求、IO 操作(更新本地存储)、与其他插件通信等逻辑。

因此,如果您的应用程序位于后台,您将无法按照您想要的方式启动导航。如果您向用户提供通知,用户可以决定单击它,然后您可以使用FirebaseMessaging.onMessageOpenedApp。在此处理程序中,您将能够处理导航。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

navigatorKey.currentContext 始终为 Null 的相关文章

随机推荐

  • 分享从我的网站到 WhatsApp Web 应用程序的链接

    我有一个网络应用程序 在其中 我尝试共享 WhatsApp 网络应用程序的链接 但不在移动应用程序中共享 我已经经历过分享 WhatsApp 网页版的链接吗 https stackoverflow com questions 2928446
  • Bitly API 支持 CORS 吗?

    我在他们的文档中看到支持 CORS 但我尝试从 JavaScript 发出请求没有成功 请求此网址 我收到标准错误 No Access Control Allow Origin header is present on the reques
  • .selectAll() 到底做了什么?

    我一直在玩这个例子 使用 D3 js 将 XML 呈现为 HTML 表 https gist github com ashleybot 1873934 尝试并学习D3 jsAPI 我想我已经掌握了它的窍门 但我无法真正理解它是什么 sele
  • 如何在 Android Studio 布局编辑器中使用自定义分辨率?

    有时我正在编辑列表项或类似的小型 UI 组件的布局资源 这很好 但是 Android Studio 布局编辑器中的可用屏幕分辨率太大 无法合理地了解列表项或其他内容的外观 即使使用可用的最小分辨率 2 7 QVGQ 也总会有大量未使用的空间
  • R dplyr left join - 多个返回值和新行:如何仅询问第一个匹配项?

    假设我在单独的表格中列出了郊区名称 犯罪率及其议会名称 我知道 left join table1 table2 by Suburb 将返回由于理事会的多个匹配而新添加的行的表 问题是郊区 3 和郊区 4 重叠为两个议会 有没有办法让左连接只
  • jQuery 是否删除 AJAX 请求返回的脚本标签?

    我正在基于 jQuery 的 JavaScript 代码中执行 AJAX 调用 响应包含一个
  • 我将我的应用程序本地化到日本,但我看不到它

    最近 我使用 iTunes Connect 在国际上上传了我的应用程序 包括日本 法国 中国等 我可以在法国 Apple 的 App Store 中看到我的应用程序的法语版本 但是 我在日本和中国的 App Store 中只显示英文版本 我
  • 所有这些 Reactive Observable 扩展之间的实际区别是什么?

    给定一个BehaviorSubject 在其上调用所有这些不同的函数之间的实际区别是什么 First Last 最新值 最近值 下一个值 Single Take 1 假设我理解正确 给定BehaviorSubject 他们都应该做同样的事情
  • 每个分支基于作业的安全性 - Jenkins 多分支管道

    我有一个用于构建工件的 Jenkins 多分支管道 并且有用于master dev etc 我想在每个分支的基础上启用基于项目的安全性 即只允许开发人员运行 dev构建的分支作业而不是任何其他作业 因为这样做会产生不良影响 我知道有基于项目
  • Linux IOMMU 页表

    我一直在读关于IOMMU https en wikipedia org wiki Input E2 80 93output memory management unitLinux 中的支持 并对 IOMMU 中的页表有一些疑问 IOMMU
  • Oracle SQL Developer 在哪里存储连接?

    我的应用程序无法连接到 Oracle Database 11g Express Edition 我在此版本中创建了一个测试数据库 我可以使用 Oracle SQL Developer 很好地连接到数据库 创建表 视图等 但是 我很难通过我的
  • 散景热图的使用

    我有一系列带有时间戳的某些事件 并且想要创建一个热图 x 轴应代表日期 例如 2016 02 03 y 轴应代表发生的时间 例如13 如果 13 32 颜色应取决于发生事件的计数 我的数据 作为 pandas 数据框z head date
  • 为什么 java.util.concurrent.ArrayBlockingQueue 在调用await() 时使用“while”循环而不是“if”?

    我一直在玩我自己的版本 使用 if 一切似乎都工作正常 当然 如果使用 signalAll 而不是 signal 这会严重崩溃 但如果一次只通知一个线程 这怎么会出错呢 他们的代码here http fuseyism com classpa
  • 将文本文件中的数字列表转换为整数

    我有一个在文本文件中从左到右读取的数字列表 我试图让 Python 将它们作为数字列表读取 以便我最终可以将它们绘制成图表 我一直在尝试各种字符串 pickle 和字节到字符串代码 但不可避免地会出现错误 数字的例子 20494 20461
  • 使用 pymongo 在 mongodb 上插入 $currentDate

    我需要测试服务器 mongodb 的准确性 我正在尝试插入一系列数据 花点时间将其发送到数据库以了解其何时插入 我正在尝试这个 usr bin python from pymongo import Connection from datet
  • 日历事件的可视化。以最大宽度布局事件的算法

    我需要你的算法帮助 它将在客户端使用 JavaScript 开发 但这并不重要 我最感兴趣的是算法本身 布局日历事件 以便每个事件框都有最大宽度 请看下图 Y 轴是时间 因此 如果 测试事件 从中午开始 例如 并且没有其他内容与其相交 则它
  • 如何在不使用 sudo 的情况下安装 virtualenv?

    I have easy install and pip 我的错误很多Linux 薄荷 12 我刚刚重新安装了它 我想再次从头开始安装所有内容 This https stackoverflow com questions 9340637 is
  • 获取 URL 中传递的变量 Laravel

    可能是一个基本问题 但我似乎无法理解 我想将我的 url 中的变量抓取到我的控制器 索引视图 foreach paymentInfos as p tr td a href p gt order id a td td p gt lastnam
  • CSS-Grid:如果侧边栏为空,则拉伸主网格

    我对包含侧边栏的简单网格布局有一些样式问题 aside 还有一些main内容
  • navigatorKey.currentContext 始终为 Null

    我想在收到 FCM 后台消息时切换到屏幕 但对于这个context是必需的 但我里面绝对没有FirebaseBackgroundMessageHandler所以在网上搜索后我发现我可以从NavigatorKey所以我创建了这个全局变量 fi