Flutter 如何在颤振贴图构造函数中处理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

我有一个Firebase Firestore,其中包含
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';