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

Flutter中Firestore存储数据格式异常:误存TextEditingController对象

问题原因与解决方法

问题原因

你存储的是TextEditingController对象的字符串表示,而非输入框的实际文本,核心问题是你调用了控制器的toString()方法——这个方法返回的是控制器对象的内部描述信息,不是用户输入的内容。

解决方法

要获取输入框的实际文本,需要使用TextEditingController的.text属性,替换掉代码里的toString()调用即可。

修改后的代码如下:

final adTitleController = TextEditingController();
final priceController = TextEditingController();
final adDescription = TextEditingController();

Future<void> createAds() async {
  CollectionReference ads = FirebaseFirestore.instance.collection('Ads');

  // 获取输入框的实际文本内容
  String? title = adTitleController.text;
  String? desc = adDescription.text;
  String? price = priceController.text;
  String? userId = FirebaseAuth.instance.currentUser?.uid;

  // 添加文档到Firestore,获取自动生成的文档引用
  DocumentReference docRef = await ads.add({
    "UID": userId,
    "Title": title,
    "Description": desc,
    "Price": price,
  });
  // 如果需要将Firebase自动生成的ID作为AdId存储,执行以下更新操作
  await docRef.update({"AdId": docRef.id});
}

补充说明:原代码中adId变量未赋值,会存储null。如果需要用Firebase自动生成的文档ID作为AdId,可以利用add方法返回的DocumentReference获取id,再更新到文档中(如上述代码所示)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:12:53