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

如何根据输入的可用床位数在Firestore中新增对应床位字段?

解决方案

你可以通过将输入床位数转为整数+循环生成字段的方式,实现动态添加对应床位字段的需求,以下是修改后的完整代码:

// 先处理床位数的格式转换,避免输入非数字导致报错
int? bedCount;
try {
  bedCount = int.parse(_bedsAvailable.text);
} catch (e) {
  print("请输入有效的数字床位数");
  return; // 转换失败时终止后续操作
}

// 初始化基础房间数据
Map<String, dynamic> roomData = {
  "roomname": _roomname.text,
  "bedsAvailable": bedCount.toString(), // 也可以直接存整数,根据你的数据格式需求调整
  "price": _price.text,
};

// 循环生成bed1、bed2...bedN字段,默认设为"available"表示空闲,可按需修改值
for (int i = 1; i <= bedCount; i++) {
  roomData["bed$i"] = "available";
}

// 提交数据到Firestore
FirebaseFirestore.instance.collection(roomName ?? "").add(roomData)
  .then((value) => Navigator.push(
    context, MaterialPageRoute(builder: (_) => OwnersMain())))
  .catchError((error) => print("something is wrong. $error"));

关键说明

  • 输入校验:用try-catch包裹int.parse,处理用户输入非数字的情况,避免程序崩溃。
  • 动态字段生成:通过for循环从1遍历到床位数,自动生成bed1至bedN的键名,你可以根据业务需求调整字段值(比如改成布尔值true/false表示是否空闲,或是嵌套Map存储更多床位信息)。
  • 数据结构扩展:如果后续需要给床位添加更多属性(如入住用户ID、备注),可以将字段值改为Map类型,例如:roomData["bed$i"] = {"status": "available", "guestId": ""}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:45:24