You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用flutter_local_notifications实现每日多次定时通知问题咨询

修复方案

1. 统一通知插件实例

你代码中存在两个独立的FlutterLocalNotificationsPlugin实例:仅第一个实例执行了初始化逻辑,后续用于调用zonedSchedule的第二个实例未完成初始化,这是后续通知无法触发的核心问题。
全局仅保留一个实例即可,所有逻辑都复用该实例:

// 全局仅初始化一次插件实例
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

// 初始化逻辑
Future<void> initNotify() async {
  AndroidInitializationSettings androidInit = AndroidInitializationSettings("icon");
  IOSInitializationSettings iosInit = IOSInitializationSettings();
  final initSettings = InitializationSettings(android: androidInit, iOS: iosInit);
  await flutterLocalNotificationsPlugin.initialize(initSettings);
}

后续配置通知参数、调用调度方法时,都使用这个已经完成初始化的全局实例,不要重新创建新的实例。

2. 校验调度时间有效性

zonedSchedule会自动忽略触发时间早于当前时间的任务,调用前需要判断所有礼拜时间均晚于当前时间:

final currentTime = tz.TZDateTime.now(location);
// 仅调度时间在当前之后的通知
if (prayerTimes.dhuhr!.isAfter(currentTime)) {
  flutterLocalNotificationsPlugin.zonedSchedule(
    1,
    "title",
    "dhuhr",
    tz.TZDateTime.from(prayerTimes.dhuhr!, location),
    platform,
    uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime,
    androidAllowWhileIdle: true,
    matchDateTimeComponents: DateTimeComponents.time
  );
}
if (prayerTimes.asr!.isAfter(currentTime)) {
  flutterLocalNotificationsPlugin.zonedSchedule(
    2,
    "title",
    "Asr",
    tz.TZDateTime.from(prayerTimes.asr!, location),
    platform,
    uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime,
    androidAllowWhileIdle: true,
    matchDateTimeComponents: DateTimeComponents.time
  );
}

你当前配置的matchDateTimeComponents: DateTimeComponents.time已经可以实现每日同一时间重复触发通知,无需额外修改。

3. 保证通知ID唯一

不同时段的通知必须使用不同的ID,ID重复会导致新的调度任务覆盖旧任务,你当前用的1、2是符合要求的,后续添加其他礼拜时段时,依次分配3、4、5等唯一ID即可。

4. 安卓端适配后台限制

如果在安卓设备测试,需要做以下配置避免系统拦截通知:

  • 在AndroidManifest.xml中添加SCHEDULE_EXACT_ALARM、USE_EXACT_ALARM权限,适配安卓12及以上版本的精确闹钟权限要求
  • 引导用户关闭APP的电池优化,开启自启动权限,避免系统后台清理通知进程

内容的提问来源于stack exchange,提问作者Mohammed Bekele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:45:06