Flutter:只有在我们使用local_notification点击通知时如何执行操作?

时间:2018-04-30 15:51:10

标签: notifications dart flutter

我使用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),
      ),
    );
  }

此方法在显示通知时直接调用回调函数,但我只想在用户点击通知时执行回调函数。

有办法做到这一点吗?

2 个答案:

答案 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,
        );
    }));
}