firebase - 如果留空,如何不将字段保存到 Fireabse
问题描述
我有一个带有 TextFormFields 的页面 - 如果用户将其留空,我如何不将字段保存到 Firebase?我猜测if
带有 的语句.isEmpty
,但我不确定在哪里实现它们:
onPressed: () async {
final uid =
await TheProvider.of(context).auth.getCurrentUID();
//save data to firebase
widget.contact.name = oneController.text;
widget.contact.phoneNumber = int.parse(twoController.text);
widget.contact.location = threeController.text;
widget.contact.rating = int.parse(fourController.text);
widget.contact.instagram = fiveController.text;
widget.contact.birthday = int.parse(sixController.text);
widget.contact.notes = sevenController.text;
await db
.collection("userData")
.doc(uid)
.collection("Contacts")
.add(widget.contact.toJson());
模型文件
class Contact {
int rating;
String name;
String location;
int phoneNumber;
String instagram;
int birthday;
String notes;
Contact(this.name, this.phoneNumber, this.location, this.rating,
this.instagram, this.birthday, this.notes);
Map<String, dynamic> toJson() => {
'Name': name,
'PhoneNumber': phoneNumber,
'Location': location,
'Rating': rating,
'Instagram': instagram,
'Birthday': birthday,
'Notes': notes,
};
}
TextFormFields 之一的示例
TextFormField(
controller: fourController,
style: TextStyle(color: Colors.tealAccent),
cursorColor: Colors.white,
decoration:
textInputDecoration.copyWith(hintText: 'Rating'),
keyboardType: TextInputType.number),
解决方案
通常,如果我有/可能有用户未设置的信息的空字段,我只需将其上传为 null,并在显示/使用信息时处理 null 值。(不显示生日if(birthday==null)
)。
如果您不想这样做,您首先在Contact
类中创建一个映射,然后在将映射变为 之前从映射中删除空值如何JSON
?我认为这将是最简单的。
以下是如何从 dart 中的地图中删除值:
Map map = {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'};
map.remove(2); //enter the key you wish to remove
将其与 if 语句相结合,检查每个值是否为空,如果是,则将其从映射中删除。
推荐阅读
- python - Flask + gRPC 麻烦
- python - Python vs Julia 速度比较
- python - 如何使用 PySpark 将复杂的 JSON 转换为数据帧?
- java - 如何编组 HashMap
> 使用 JAXB - java - 将图像从活动传递到类 android(动态壁纸)
- java - 在 Intellij 中打开作为项目一部分的文件
- python - java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 在 Amazon EMR 上的 Jupyter Notebook 中
- java - 使用 Dexter 的 Kotlin 权限转到设置对话框
- python - Python Pandas:在 DataFrame 的特定列中按模式(跨行)拆分
- unit-testing - 使用管道时如何在 Jenkins 中显示 Clover 报告?