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

使用flutter_local_notifications插件时如何动态修改通知标题和正文

问题根因

你当前使用的periodicallyShow方法会在注册定时任务时,就将通知标题、正文等参数固化存储到系统本地,后续每次触发通知时只会调用注册时的静态数据,不会自动执行接口拉取逻辑,因此内容无法更新。

实现动态内容通知的方案

方案1:搭配workmanager实现后台实时拉取(全平台兼容)

该方案支持后台定期执行自定义逻辑,每次触发通知前都会主动拉取后端最新数据,内容实时性最高:

  • 先在pubspec.yaml中添加workmanager依赖,该插件支持跨平台后台定期任务调度
  • 初始化后台任务调度器,在任务逻辑中实现「拉取后端数据+推送通知」的完整流程
  • 按需配置安卓、iOS的后台运行权限,避免系统拦截后台任务

示例代码:

// 后台任务回调入口
void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) async {
    try {
      // 拉取后端最新通知数据
      var res = await http.get(Uri.parse(<REST API ENDPOINT>));
      var body = json.decode(res.body);
      Map notificationData = body['results'][0];
      
      // 推送最新内容的通知
      await flutterLocalNotificationsPlugin.show(
        notificationData['id'],
        notificationData['title'],
        notificationData['body'],
        notificationDetails
      );
      return Future.value(true);
    } catch (e) {
      return Future.value(false);
    }
  });
}

void main() {
  // 初始化后台任务管理器
  Workmanager().initialize(
    callbackDispatcher,
    isInDebugMode: false
  );
  // 注册每日执行的定时通知任务,可自定义首次触发时间
  Workmanager().registerPeriodicTask(
    "daily-notification",
    "fetchAndPushNotification",
    frequency: const Duration(days: 1),
    initialDelay: Duration.zero // 按需调整首次触发延迟时间
  );
  runApp(const MyApp());
}

方案2:启动/前台时刷新定时任务(轻量无额外核心依赖)

如果通知内容更新频率不高,可以不用引入额外插件,每次用户打开APP/APP回到前台时,先取消旧的定时通知,拉取最新数据后重新注册定时任务即可:

// APP启动/回到前台时调用该方法刷新通知
Future<void> refreshDailyNotification() async {
  const targetNotificationId = 1; // 替换为你的实际通知ID
  // 先取消已注册的旧定时通知
  await flutterLocalNotificationsPlugin.cancel(targetNotificationId);
  // 拉取最新通知数据
  var res = await http.get(Uri.parse(<REST API ENDPOINT>));
  var body = json.decode(res.body);
  Map notificationData = body['results'][0];
  // 用最新内容重新注册每日定时通知
  await flutterLocalNotificationsPlugin.periodicallyShow(
    notificationData['id'],
    notificationData['title'],
    notificationData['body'],
    RepeatInterval.daily,
    notificationDetails
  );
}

该方案缺点是用户长期不打开APP时,通知内容不会更新,适合低频率更新的场景。

内容的提问来源于stack exchange,提问作者Ibrahim Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:27:03