在我的模型类中,我创建了命名构造函数 OrderModel.fromSnapshot 用于将 firebase 集合数据转换为模态类,
很多次我都面临数据转换错误,
在我的终端中,我可以看到 fetchAllOrder 由于 fromSnapshot 构造函数而出现错误,但如何知道哪一行正是导致错误的原因。?
有没有什么工具或方法来检查我哪里做错了
Future<List<OrderModel>> fetchAllOrders() async{
try{
final snapshot=await FirebaseFirestore.instance.collection('Users').doc(FirebaseAuth.instance.currentUser!.uid).collection('Orders').orderBy('OrderDate',descending: true).get();
final list=snapshot.docs.map((e) => OrderModel.fromSnapshot(e)).toList();
return list;
}
catch(e){
MyHelperFunction.showSnackbar(e.toString());
throw e;
}
}
这是我的 fromsnapshot() 构造函数,我很难理解哪个属性没有正确设置......
有什么方法可以指定哪一行是错误的主要原因?
factory OrderModel.fromSnapshot(DocumentSnapshot<Map<String,dynamic>> snapshot){
final data=snapshot.data() as Map<String,dynamic>;
return OrderModel(
orderId: snapshot.id,
orderStatus: data['OrderStatus'],
cart: (data['Cart'] as List<dynamic>).map((e) => CartItemModel.fromMap(e as Map<String,dynamic>)).toList(),
orderAmount: data['OrderAmount'] as double,
orderDate: (data['OrderDate'] as Timestamp).toDate(),
paymentMethod: PaymentMethodModel.fromMap(data['PaymentMethod'] as Map<String,dynamic>),
address: AddressModel.fromMap(data['Address'] as Map<String,dynamic>),
delivaryDate: (data['DeliveryDate'])==null?null:(data['DeliveryDate'] as Timestamp).toDate(),
);
}
错误可能在这里:
delivaryDate: (data['DeliveryDate'])==null?null:(data['DeliveryDate'] as Timestamp).toDate(),
如果
deliveryDate
是一个字符串,那么你尝试将它影响为 null if data['DeliveryDate'])==null
delivaryDate: (data['DeliveryDate'])==null?"":(data['DeliveryDate'] as Timestamp).toDate(),
将 null 转换为空字符串。
另一种方法是将
deliveryDate
的类型从 String 更改为 String?允许空值。