微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

颤振|本地通知: ZonedSchedule 只触发一次

如何解决颤振|本地通知: ZonedSchedule 只触发一次

我正在尝试在 Flutter 应用程序中设置 Local Notifications,并且需要每天触发一次通知并且需要从 sqlite 读取通知文本。

为了测试,我试图每 2 分钟运行一次,看看它是否从 sqlite 正确获取数据,但它似乎只运行一次...

await FlutterlocalnotificationsPlugin.zonedSchedule(
      notificationID,"Dynamic Data",await getData(),_nextInstanceOfTime(initialHour,initialMin),// have defined an initial hr and min to start the notification
       const NotificationDetails(
          android: AndroidNotificationDetails('1','test','test')),androidAllowWhileIdle: true,uilocalnotificationDateInterpretation:
      UIlocalnotificationDateInterpretation.absoluteTime,matchDateTimeComponents: DateTimeComponents.time
  );

tz.TZDateTime _nextInstanceOfTime(int hour,int minutes) {
Duration offsetTime= DateTime.Now().timeZoneOffset;
tz.TZDateTime scheduledDate;
tz.TZDateTime currentTime;

if (offsetTime.isNegative) {
  scheduledDate = tz.TZDateTime.local(DateTime.Now().year,DateTime.Now().month,DateTime.Now().day,hour,minutes)
      .add(offsetTime);
  currentTime = tz.TZDateTime.local(DateTime.Now().year,DateTime.Now().hour,DateTime.Now().minute)
      .add(offsetTime);
}
else {
  scheduledDate = tz.TZDateTime.local(DateTime.Now().year,minutes)
      .subtract(offsetTime);
  currentTime = tz.TZDateTime.local(DateTime.Now().year,DateTime.Now().minute)
      .subtract(offsetTime);
}


if (scheduledDate.isBefore(currentTime)) {
  scheduledDate = scheduledDate.add(const Duration(days: 1));
}
scheduledDate = scheduledDate.add(const Duration(minutes: 2));//->>> WANTING TO TEST FIRING IT EVERY 2 MINS
print("next notification:$scheduledDate"); // ->> THIS PRINTS ONLY ONCE
return scheduledDate;

}

getData() 从 sqlite 中获取随机字符串

print("next notification:$scheduledDate") 只打印一次,而不是根据需要每 2 分钟打印一次。

请帮忙!!

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。