在flutter中从firebase集合中获取数据时,type null is not a subtype of String错误?

问题描述 投票:0回答:1

在我的模型类中,我创建了命名构造函数 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(),
    );

  }
  
flutter google-cloud-firestore
1个回答
0
投票

错误可能在这里:

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?允许空值。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.