Flutter 如何在颤振贴图构造函数中处理Firestore中的可选字段?
我有一个Firebase Firestore,其中包含Flutter 如何在颤振贴图构造函数中处理Firestore中的可选字段?,flutter,dart,Flutter,Dart,我有一个Firebase Firestore,其中包含centa_tasks集合,其中包含的文档可能包含或可能不包含字符串类型的location 数据结构: 我有一个任务类,它获取文档快照,如下所示: class Task { final int status; final String site; final String location; final String id; final DocumentReference reference; Task.fromM
centa_tasks
集合,其中包含的文档可能包含或可能不包含字符串类型的location
数据结构:
我有一个任务
类,它获取文档快照
,如下所示:
class Task {
final int status;
final String site;
final String location;
final String id;
final DocumentReference reference;
Task.fromMap(Map<String, dynamic> map, {this.id, this.reference})
: assert(map['site'] != null),
assert(map['status'] != null),
assert(map['location'] != null),
site = map['site'],
status = map['status'],
location = map['location'];
Task.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data,id: snapshot.documentID, reference: snapshot.reference);
}
类任务{
最终国际地位;
最终管柱位置;
最终管柱位置;
最终字符串id;
最终文件参考;
Task.fromMap(映射映射,{this.id,this.reference})
:assert(映射['site']!=null),
断言(映射['status']!=null),
断言(映射['location']!=null),
站点=地图['site'],
状态=映射['status'],
位置=地图[‘位置’];
Task.fromSnapshot(DocumentSnapshot快照)
:this.fromMap(snapshot.data,id:snapshot.documentID,reference:snapshot.reference);
}
问题在于,并非所有文档都包含字段location
,因此当传递的任务在映射中不包含location
,空断言将失败
如何在构造函数的映射中允许可选键
多谢各位
Brandon Pillay我想你应该删除这个断言 断言(映射['location']!=null) 然后 上面的代码将location设置为'noData',如果为空,那么在代码中可以检查location=='noData',以了解是否缺少location
location = (map['location']!=null)? map['location'] : 'noData';