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

Flutter报错:参数类型RemoteMessage无法赋值给Map<String?, dynamic>参数

错误原因

报错为类型不匹配问题:getRideRequestId方法定义的入参类型为Map<String?, dynamic>,但你在FirebaseMessaging.onMessage和FirebaseMessaging.onMessageOpenedApp回调中传入的是RemoteMessage类型实例,两种类型不兼容触发编译错误。

修复方案

仅需修改pushNotification.dart中的getRideRequestId方法即可,具体修改如下:

  1. 把方法入参类型从Map<String?, dynamic>替换为RemoteMessage
  2. 调整内部取值逻辑,从RemoteMessage的data属性中读取自定义字段

修改后的完整方法代码:

String getRideRequestId(RemoteMessage message) {
  String rideRequestId = "";
  if (Platform.isAndroid) {
    rideRequestId = message.data['ride_request_id']?.toString() ?? "";
  } else {
    // 新版本FCM跨平台自定义字段均存储在data属性中,iOS端也可直接从data取值
    rideRequestId = message.data['ride_request_id']?.toString() ?? "";
    // 若你使用旧版本FCM配置,iOS端字段在根路径,可替换为下行代码:
    // rideRequestId = message['ride_request_id']?.toString() ?? "";
  }
  return rideRequestId;
}

修改完成后,原代码第20、25行的调用逻辑无需改动,类型匹配后报错会自动消除。

额外优化提示
  • 字段取值时增加?.toString() ?? ""空安全判断,可避免后台返回空值时触发空异常
  • 你main.dart文件的路由注册代码中存在多余的`enter code here`无效字符,建议删除避免编译问题

内容的提问来源于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.04 02:15:03