我使用local_notification显示通知,我想点击通知时执行操作(例如,在新窗口中打开新信号的消息)。我试着用
onNotificationClick: new NotificationAction(actionText: "Open",
callback: openSignal(signalEventFromCloud[i]),
payload: "Open signal")
并且回调函数是:
openSignal(Signal signal) {
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new DetailScreen(signal: signal),
),
);
}
此方法在显示通知时直接调用回调函数,但我只想在用户点击通知时执行回调函数。
有办法做到这一点吗?
答案 0 :(得分:2)
callback
需要是一个函数,因此请将代码更改为
onNotificationClick: new NotificationAction(actionText: "Open",
callback: openSignal,
payload: "Open signal")
否则openSignal会在构建Widget时被调用,而不是因为点击而被调用。
但是,您需要更改openSignal以接受一个String参数
openSignal(String signal) {
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new DetailScreen(),
),
);
}
它不清楚您的参数是什么,但回调需要一个字符串
答案 1 :(得分:0)
您只能在有效负载参数中传递字符串。您还可以使用此flutter local notification plugin进行更多自定义。
var initSetttings = InitializationSettings(androidSettings, iOSSettings);
flutterLocalNotificationsPlugin.initialize(initSetttings, onSelectNotification: onClickNotification);
Future onClickNotification(String payload) {
Navigator.of(context).push(MaterialPageRoute(builder: (_) {
return DestinationScreen(
payload: payload,
);
}));
}