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

Flutter Firestore报错:int无法赋值给FieldValue类型的问题解决

解决方案

问题出在Dart的类型推断上:当你用var data = {field1: FieldValue.increment(1)};初始化时,Dart会自动将data的类型推断为Map<String, FieldValue>——这个Map只能存储FieldValue类型的值,所以后续存入int类型的0就会触发类型不匹配错误。

你只需要显式声明data的类型为Map<String, dynamic>,让它支持存储不同类型的值即可:

DocumentReference<Map<String, dynamic>> ref = db.collection('MyCollect').doc(uid);
// 显式指定Map类型为Map<String, dynamic>
Map<String, dynamic> data = {field1: FieldValue.increment(1)};
data.addAll({field2: FieldValue.increment(1)});
data.addAll({field3: 0});
ref.set(data, SetOptions(merge: true));

或者也可以用Map<String, dynamic>.from来初始化,达到同样的效果:

var data = Map<String, dynamic>.from({field1: FieldValue.increment(1)});

这样修改后,field3就能正常设置为0,同时field1和field2的增量操作也不受影响。

内容的提问来源于stack exchange,提问作者Mr. Tacio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:25:22