Флаттер: Как выполнить действие, только когда мы нажимаем на уведомление с помощью local_notification? - PullRequest
0 голосов
/ 30 апреля 2018

Я отображаю уведомления, используя 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),
      ),
    );
  }

Этот метод вызывает функцию обратного вызова напрямую, когда отображается уведомление, но я хочу выполнить функцию обратного вызова только в том случае, если пользователь щелкнет уведомление.

Есть способ сделать это?

1 Ответ

0 голосов
/ 30 апреля 2018

callback должна быть функцией, поэтому измените ваш код на

onNotificationClick: new NotificationAction(actionText: "Open",
                callback: openSignal,
                payload: "Open signal")

в противном случае openSignal вызывается при создании виджета, а не в результате щелчка.

Однако вам нужно изменить openSignal, чтобы он принимал один параметр String

  openSignal(String signal) {
    Navigator.push(
      context,
      new MaterialPageRoute(
        builder: (context) => new DetailScreen(),
      ),
    );
  }

неясно, для чего предназначен ваш параметр, но обратный вызов принимает одну строку

...