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

Flutter使用flutter_local_notifications 13.0.0时回调类型不匹配报错求助

解决flutter_local_notifications ^13.0.0的回调参数类型不匹配问题

错误核心原因是版本升级后,onDidReceiveNotificationResponse的回调签名发生了变更,你的onSelectNotification方法签名和新版本要求不匹配:

  • 旧版本回调直接接收String? payload,返回Future<void>
  • 13.0.0版本要求回调接收NotificationResponse对象,返回void

修改步骤:

  1. 更新onSelectNotification方法签名
    将原来的异步方法改为同步方法,参数替换为NotificationResponse,从该对象中提取payload:
void onSelectNotification(NotificationResponse response) {
  final String? payload = response.payload;
  print('payload $payload');
  if (payload != null && payload.isNotEmpty) {
    onNotificationClick.add(payload);
  }
}

如果需要在回调内执行异步操作,可在方法内部用async包裹逻辑,但方法本身返回值保持void:

void onSelectNotification(NotificationResponse response) async {
  final String? payload = response.payload;
  print('payload $payload');
  if (payload != null && payload.isNotEmpty) {
    // 这里可执行异步操作,比如导航、网络请求等
    await someAsyncFunction();
    onNotificationClick.add(payload);
  }
}
  1. 修正initialize方法中的回调绑定
    现在onDidReceiveNotificationResponse可以直接绑定修改后的onSelectNotification,类型匹配后错误会消失:
await _localNotificationService.initialize(
  settings,
  onDidReceiveNotificationResponse: onSelectNotification,
);

额外iOS适配提示

onDidReceiveLocalNotification在新版本中已被标记为废弃,建议统一使用onDidReceiveNotificationResponse处理所有通知回调,避免后续版本兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:10:29