【发布时间】:2020-03-12 08:40:01
【问题描述】:
所以,我正在尝试处理 onBackgroundMessage。我已经能够处理 onMessage、onResume 和 onLaunch。
这里是我的myBackgroundMessageHandler 来处理onBackgroundMessage
static Future<dynamic> myBackgroundMessageHandler(
Map<String, dynamic> message) {}
我想在我的myBackgroundMessageHandler 打开指定页面。在onResume 我可以做到这一点
Data data = Data(
clickAction: message['data']['click_action'],
sound: message['data']['sound'],
status: message['data']['status'],
screen: message['data']['screen'],
extradata: message['data']['extradata'],
);
if (data.screen == "MAINTENANCE_DETAIL") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => new MaintenanceDetail(
RequestMaintenanceCode: data.extradata,
),
),
);
}
但是,当我将其复制到我的 myBackgroundMessageHandler 时。我收到此错误
Error: Getter not found: 'context'.
我认为错误是因为myBackgroundMessageHandler 是静态方法,所以我如何在myBackgroundMessageHandler 中打开屏幕?
【问题讨论】:
-
应用程序在调用该方法时处于后台,因此它无法导航到任何地方。仅当应用程序处于前台时才可以进行导航。您应该能够做的是保留信息(例如在共享首选项中),并在应用程序恢复时读取该信息,并基于该信息进行导航。
-
你找到解决办法了吗?
标签: flutter dart firebase-cloud-messaging