不应该被调用的函数被调用

问题描述 投票:0回答:1

有一个预定的通知,该通知应该在5秒之后显示。在void initState函数中调用此计划的通知。我正在使用此package显示通知。

通知将在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',
    );
  }
}

Note单击通知时需要调用函数whenNotificationSelect,但由于其他原因,我不知道应用程序启动时会立即调用此函数。 我想要 whenNotificationSelect仅在单击通知时调用,而不在应用启动时调用。

谢谢你,非常感谢。

android flutter dart push-notification scheduling
1个回答
0
投票

尝试一下

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

[当您不使用(字符串有效负载)时,这意味着该函数也会在null上触发。每当需要传递参数时,请使用(arguments)=> functionName(arguments)

© www.soinside.com 2019 - 2024. All rights reserved.