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

Flutter调用UserModel.toJson()写入Firestore报表达式不能用于map字面量错误

问题原因

你调用set方法时给参数额外套了一层{},而userModel.toJson()本身已经返回符合要求的Map<String, dynamic>类型,直接传入即可。你当前的写法相当于把一个Map作为元素放到另一个空Map的字面量里,不符合Dart的Map语法规范,所以触发报错。

修复方案

直接删掉外层多余的{}即可,修改后的代码如下:

await _firestore.collection('users').doc(_firebaseAuth.currentUser!.uid).set(
  userModel.toJson(),
);

如果后续你需要在toJson返回的内容基础上额外追加其他字段,可以用Dart的扩展运算符...,写法如下:

await _firestore.collection('users').doc(_firebaseAuth.currentUser!.uid).set(
  {
    ...userModel.toJson(),
    'extraField': '额外的字段值',
  },
);

该写法符合Map字面量的语法要求,不会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:57:00