如何在模型类中创建模型类(Flutter / Dart)



我正试图使一个多供应商的应用程序与Flutter。我现在面临的问题是我如何在一个模型类中创建一个模型类:

例子:

class ProductModel {
String? name;
double? price;
String? imgUrl;
double? weight;
ProductModel();
ProductMode.fromSnapShot(DocumentSnapshot snapshot){
name = snapshot['name'];
price= snapshot['price'];
imgUrl= snapshot['imgUrl'];
weight= snapshot['weight'];
}
}

我已经检索了Firestore中的所有产品:

class VendorModel{
String? name;
String? imgUrl;
DateTime? opensAt;
DateTime? closesAt;

VendorModel();
VendorModel.fromSnapshot(DocumentSnapshot snapshot){
name = snapshot['name'];
imgUrl= snapshot['imgUrl'];
opensAt= DateTime.tryParse(snapshot['opensAt'].toString());
closesAt= DateTime.tryParse(snapshot['closesAt'].toString());
}
}

我还从Firestore检索了所有供应商:

这是我想做的:我想使用这个模型将我从Firestore获取的产品添加到它们各自的供应商中。但如果我的数据来自Firestore,我不知道如何做到这一点。

class VendorWithProductsModel{
VendorModel vendor;
List<ProductModel> products;
VendorWithProductsModel();
(I AM STUCK HERE)
}

这是我在检索产品和供应商时的Firestore代码片段:

VendorModel _vendor = VendorModel();
List<VendorModel> _allVendors = [];
Future<VendorModel> getCertainVendor(docId) async{
await vendor.doc(docId).get().then((value){
_vendor = VendorModel.fromSnapshot(value);
});
return _vendor;
}
Future<List<VendorModel>> getAllVendors() async{
await vendor.get().then((value){
_allVendors.add(VendorModel.fromSnapshot(value));
});
return _allVendors;
}
  • 在您的产品模型中,您需要类似vendorId的东西,在那里您可以知道哪个产品属于哪个供应商。

  • 获取所有产品和供应商后。使用这两个列表,并循环它们,这是伪代码,例如:

List<VendorWithProductsModel> doMagic (List<ProductModel> productList, List<VendorModel> vendorList) {
List<VendorWithProductsModel> vendorsWithProducts =[];
vendorList.forEach((vendor){ 
VendorWithProductsModel _vendorAndProduct = VendorWithProductsModel();
_vendorAndProduct.vendor = vendor;
_vendorAndProduct.products =[];
_vendorAndProduct.products = productList.where((e)=> e.vendorId == vendor.id).toList();
vendorsWithProducts.add(_vendorAndProduct);
});
return vendorsWithProducts;
}

最新更新