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

Flutter FirebaseMessaging发送通知报错:Null无法转为Object类型

问题原因排查

1. 强制非空断言引发的空值类型错误

你的sendNotificationToUser函数中,title和body参数定义为String?(可空字符串),但在构建FCM消息的data字段时,使用了title!和body!强制断言它们不为空。如果调用该函数时传入的title或body实际为null,就会触发type 'Null' is not a subtype of type 'Object'的错误——因为FCM要求data中的所有值必须是非空的Object类型,空值被强制转换为非空类型后,会直接触发类型不匹配异常。

2. 冗余的await调用(潜在问题)

代码中String? friendFcmToken = await friendSnapshot['token_push'];这一行存在错误:friendSnapshot['token_push']返回的是同步值(并非Future),不需要添加await,这会导致编译警告,建议修正为:

String? friendFcmToken = friendSnapshot['token_push'] as String?;

修复方案

针对核心报错,你需要处理title和body的空值场景,两种可选方式:

  • 确保调用sendNotificationToUser时,始终传入非空的title和body;
  • 在函数内部添加空值兜底逻辑,给默认值:
await _firebaseMessaging.sendMessage(
  to: friendFcmToken,
  data: {
    'title': title ?? '新消息',
    'body': body ?? '您收到一条新消息',
  },
);

这样即使title或body为null,也会用默认值填充,避免强制非空带来的类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:32:04