Функция вызывается, когда она не должна вызываться - PullRequest
0 голосов
/ 26 февраля 2020

Есть запланированное уведомление, которое должно появиться через 5 секунд . Это запланированное уведомление вызывается внутри функции void initState. Я использую этот пакет для отображения уведомлений.

Уведомление показывается точно через 5 секунд , поэтому проблем здесь нет.

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

Ниже приведен код, где все это происходит.

class _HomePageState extends State<HomePage> {

  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;

  @override
  void initState() {
    super.initState();
    flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
    var android = new AndroidInitializationSettings('@mipmap/ic_launcher');
    var initNotifSettings = new InitializationSettings(android, null);
    flutterLocalNotificationsPlugin.initialize(initNotifSettings,
        onSelectNotification: whenNotificationSelect);

    showNotification();
  }

  Future whenNotificationSelect(String payload) async {
    print('Payload: $payload');
    Navigator.pushNamed(context, '/notifications');
  }

  showNotification() async {
    var android = new AndroidNotificationDetails(
        'channel id', 'channel name', 'channel description');
    var platform = new NotificationDetails(android, null);

    var scheduledNotificationDateTime =
        DateTime.now().add(Duration(seconds: 2));
    await flutterLocalNotificationsPlugin.schedule(
      0,
      'Good morning!',
      'Greetings from me.',
      scheduledNotificationDateTime,
      platform,
      payload: 'Simple App',
    );
  }
}

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

Спасибо, большое спасибо.

1 Ответ

0 голосов
/ 26 февраля 2020

Попробуйте это

onSelectNotification:(String payload) => whenNotificationSelect(String payload)

Когда вы не используете (String полезная нагрузка), это означает, что функция также будет активирована с нулевым значением. Всякий раз, когда вам нужно передать аргументы, используйте (arguments)=> functionName(arguments)

...