Flutter Flow自定义动作中无法修改Firebase字段的问题求助
Flutter Flow自定义动作修改Firebase字段问题修复
问题核心原因
- Firebase
DocumentSnapshot.data()返回的是不可变Map,直接修改会触发只读对象修改错误 - Flutter Flow自动生成的
CircleRecord类通常需要传入文档ID,原代码未包含该必填字段
修正后的完整代码
QuerySnapshot querySnapshot = await FirebaseFirestore.instance .collection('collection-name') .where("users", arrayContains: userRef) .get(); List<CircleRecord> circles = []; for (var doc in querySnapshot.docs) { // 复制原始数据到可变Map,规避只读对象限制 Map<String, dynamic> newData = Map.from(doc.data() as Map<String, dynamic>); // 修改指定字段值 newData['fieldName'] = 'Hello'; // 传入文档ID创建CircleRecord实例(匹配Flutter Flow生成类的构造要求) CircleRecord record = CircleRecord.fromMap(newData, doc.id); circles.add(record); }
补充注意事项
- 若
CircleRecord.fromMap的参数顺序不同,需参照Flutter Flow生成的类定义调整,确保所有必填字段都传入 - 检查
fieldName的类型匹配:如果原Firebase字段是数字/布尔等类型,赋值字符串会引发类型转换错误,需保持类型一致
内容的提问来源于stack exchange,提问作者sahil patel
相关产品推荐
相关产品推荐

