【问题标题】:Flutter: How to execute an action only when we click on the notification using local_notification?Flutter:如何仅当我们使用 local_notification 点击​​通知时才执行操作?
【发布时间】:2018-04-30 15:51:10
【问题描述】:

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: notifications dart flutter


    【解决方案1】:

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

    不清楚你的参数是做什么用的,但是回调需要一个字符串

    【讨论】:

    • 我有这个错误:[dart] The argument type '() → void' can't be assigned to the parameter type '(String) → dynamic'.
    • 我没有意识到回调只需要String,谢谢!
    【解决方案2】:

    您只能在有效负载参数中传递字符串。您也可以使用此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,
            );
        }));
    }
    

    【讨论】:

    • 我正在尝试使用 flutter_local_notifications 实现相同的功能,但找不到任何添加回调的文档。你能帮帮我吗?
    猜你喜欢
    • 2017-12-22
    • 2020-03-23
    • 2016-02-16
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2016-05-16
    相关资源
    最近更新 更多