我正在使用 Firebase Cloud Messaging 通过云功能向我的 Flutter 应用程序发送推送通知,并在通知中添加数据,这些数据将定义用户点击通知时将打开的页面。
这是我用来处理修改的逻辑:
void _handleMessage(RemoteMessage message) {
Navigator.pushNamed(context, "/shop", arguments: message.data["id"]);
return;
}
Future<void> setupInteractedMessage() async {
// Get any messages which caused the application to open from
// a terminated state.
RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage();
// If the message also contains a data property with a "type" of "chat",
// navigate to a chat screen
if (initialMessage != null) {
_handleMessage(initialMessage);
}
// Also handle any interaction when the app is in the background via a
// Stream listener
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
在初始化 firebase 应用程序时,我调用了 setupInteractedMessage();
。
这有效,但是当应用程序在后台并且我点击通知时,我收到以下错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Navigator operation requested with a context that does not include a Navigator.
The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.
这意味着我无法访问导航器。有什么方法可以解决此问题,从而在用户点击通知时打开特定页面吗?
最佳答案
将此行移动到启动画面或任何其他启动屏幕构建。
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
关于firebase - 在 Flutter 中打开推送通知时使用 Navigator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68754436/