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

Flutter集成Firebase推送时出现RemoteMessage无实例方法'[]'错误求助

错误原因

你遇到的报错是因为firebase_messaging 10.0.0及以上版本重构了RemoteMessage类的结构,它不再是Map类型,无法直接通过[]运算符读取字段值,所有自定义业务参数都需要通过RemoteMessage自带的data属性(返回Map<String, dynamic>类型)获取。

修复方案

修改pushNotificationService.dart文件中的getRideRequestId方法,将直接用[]读取的逻辑替换为通过data属性读取:

// 首先明确参数类型为RemoteMessage
String getRideRequestId(RemoteMessage message) {
  String rideRequestId = "";
  final messageData = message.data;
  if (Platform.isAndroid) {
    rideRequestId = messageData['ride_request_id'] ?? "";
  } else {
    // iOS端新版本firebase_messaging统一将自定义参数放在data字段中
    rideRequestId = messageData['ride_request_id'] ?? "";
  }
  return rideRequestId;
}

额外注意事项

  • 发送推送时,ride_request_id这类业务参数必须放在data节点下发送,不要仅放在notification节点中,notification节点仅用于存储前台展示的通知标题、内容等字段
  • 可以额外添加空值校验逻辑,避免参数不存在时触发空异常
  • 后台接收推送的逻辑(你代码中的backgroundHandler)如果有读取自定义参数的需求,也要统一通过message.data读取,保持逻辑一致

内容的提问来源于stack exchange,提问作者J.Koriya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:15:05