326 lines
9.8 KiB
Dart
326 lines
9.8 KiB
Dart
class AllProductModel {
|
|
final int id;
|
|
final String name;
|
|
final String slug;
|
|
final String permalink;
|
|
final DateTime dateCreated;
|
|
final DateTime dateCreatedGmt;
|
|
final DateTime dateModified;
|
|
final DateTime dateModifiedGmt;
|
|
final String type;
|
|
final String status;
|
|
final bool featured;
|
|
final String catalogVisibility;
|
|
final String description;
|
|
final String shortDescription;
|
|
final String sku;
|
|
final String price;
|
|
final String? regularPrice;
|
|
final String? salePrice;
|
|
final bool onSale;
|
|
final bool purchasable;
|
|
final int totalSales;
|
|
final bool virtual;
|
|
final bool downloadable;
|
|
final List<dynamic> downloads;
|
|
final int downloadLimit;
|
|
final int downloadExpiry;
|
|
final String externalUrl;
|
|
final String buttonText;
|
|
final String taxStatus;
|
|
final String taxClass;
|
|
final bool manageStock;
|
|
final int? stockQuantity;
|
|
final String backorders;
|
|
final bool backordersAllowed;
|
|
final bool backordered;
|
|
final int? lowStockAmount;
|
|
final bool soldIndividually;
|
|
final String weight;
|
|
final Dimensions dimensions;
|
|
final bool shippingRequired;
|
|
final bool shippingTaxable;
|
|
final String shippingClass;
|
|
final int shippingClassId;
|
|
final bool reviewsAllowed;
|
|
final String averageRating;
|
|
final int ratingCount;
|
|
final List<int> upsellIds;
|
|
final List<int> crossSellIds;
|
|
final int parentId;
|
|
final String purchaseNote;
|
|
final List<Category> categories;
|
|
final List<dynamic> brands;
|
|
final List<Tag> tags;
|
|
final List<ProductImage> images;
|
|
final List<Attribute> attributes;
|
|
final List<dynamic> defaultAttributes;
|
|
final List<int> variations;
|
|
final List<dynamic> groupedProducts;
|
|
final int menuOrder;
|
|
final String priceHtml;
|
|
final List<int> relatedIds;
|
|
final List<MetaData> metaData;
|
|
final String stockStatus;
|
|
final bool hasOptions;
|
|
final String postPassword;
|
|
final String globalUniqueId;
|
|
|
|
AllProductModel({
|
|
required this.id,
|
|
required this.name,
|
|
required this.slug,
|
|
required this.permalink,
|
|
required this.dateCreated,
|
|
required this.dateCreatedGmt,
|
|
required this.dateModified,
|
|
required this.dateModifiedGmt,
|
|
required this.type,
|
|
required this.status,
|
|
required this.featured,
|
|
required this.catalogVisibility,
|
|
required this.description,
|
|
required this.shortDescription,
|
|
required this.sku,
|
|
required this.price,
|
|
this.regularPrice,
|
|
this.salePrice,
|
|
required this.onSale,
|
|
required this.purchasable,
|
|
required this.totalSales,
|
|
required this.virtual,
|
|
required this.downloadable,
|
|
required this.downloads,
|
|
required this.downloadLimit,
|
|
required this.downloadExpiry,
|
|
required this.externalUrl,
|
|
required this.buttonText,
|
|
required this.taxStatus,
|
|
required this.taxClass,
|
|
required this.manageStock,
|
|
this.stockQuantity,
|
|
required this.backorders,
|
|
required this.backordersAllowed,
|
|
required this.backordered,
|
|
this.lowStockAmount,
|
|
required this.soldIndividually,
|
|
required this.weight,
|
|
required this.dimensions,
|
|
required this.shippingRequired,
|
|
required this.shippingTaxable,
|
|
required this.shippingClass,
|
|
required this.shippingClassId,
|
|
required this.reviewsAllowed,
|
|
required this.averageRating,
|
|
required this.ratingCount,
|
|
required this.upsellIds,
|
|
required this.crossSellIds,
|
|
required this.parentId,
|
|
required this.purchaseNote,
|
|
required this.categories,
|
|
required this.brands,
|
|
required this.tags,
|
|
required this.images,
|
|
required this.attributes,
|
|
required this.defaultAttributes,
|
|
required this.variations,
|
|
required this.groupedProducts,
|
|
required this.menuOrder,
|
|
required this.priceHtml,
|
|
required this.relatedIds,
|
|
required this.metaData,
|
|
required this.stockStatus,
|
|
required this.hasOptions,
|
|
required this.postPassword,
|
|
required this.globalUniqueId,
|
|
});
|
|
|
|
factory AllProductModel.fromJson(Map<String, dynamic> json) => AllProductModel(
|
|
id: json['id'],
|
|
name: json['name'],
|
|
slug: json['slug'],
|
|
permalink: json['permalink'],
|
|
dateCreated: DateTime.parse(json['date_created']),
|
|
dateCreatedGmt: DateTime.parse(json['date_created_gmt']),
|
|
dateModified: DateTime.parse(json['date_modified']),
|
|
dateModifiedGmt: DateTime.parse(json['date_modified_gmt']),
|
|
type: json['type'],
|
|
status: json['status'],
|
|
featured: json['featured'],
|
|
catalogVisibility: json['catalog_visibility'],
|
|
description: json['description'],
|
|
shortDescription: json['short_description'],
|
|
sku: json['sku'],
|
|
price: json['price'],
|
|
regularPrice: json['regular_price'],
|
|
salePrice: json['sale_price'],
|
|
onSale: json['on_sale'],
|
|
purchasable: json['purchasable'],
|
|
totalSales: json['total_sales'],
|
|
virtual: json['virtual'],
|
|
downloadable: json['downloadable'],
|
|
downloads: json['downloads'],
|
|
downloadLimit: json['download_limit'],
|
|
downloadExpiry: json['download_expiry'],
|
|
externalUrl: json['external_url'],
|
|
buttonText: json['button_text'],
|
|
taxStatus: json['tax_status'],
|
|
taxClass: json['tax_class'],
|
|
manageStock: json['manage_stock'],
|
|
stockQuantity: json['stock_quantity'],
|
|
backorders: json['backorders'],
|
|
backordersAllowed: json['backorders_allowed'],
|
|
backordered: json['backordered'],
|
|
lowStockAmount: json['low_stock_amount'],
|
|
soldIndividually: json['sold_individually'],
|
|
weight: json['weight'],
|
|
dimensions: Dimensions.fromJson(json['dimensions']),
|
|
shippingRequired: json['shipping_required'],
|
|
shippingTaxable: json['shipping_taxable'],
|
|
shippingClass: json['shipping_class'],
|
|
shippingClassId: json['shipping_class_id'],
|
|
reviewsAllowed: json['reviews_allowed'],
|
|
averageRating: json['average_rating'],
|
|
ratingCount: json['rating_count'],
|
|
upsellIds: List<int>.from(json['upsell_ids']),
|
|
crossSellIds: List<int>.from(json['cross_sell_ids']),
|
|
parentId: json['parent_id'],
|
|
purchaseNote: json['purchase_note'],
|
|
categories: List<Category>.from(json['categories'].map((x) => Category.fromJson(x))),
|
|
brands: json['brands'],
|
|
tags: List<Tag>.from(json['tags'].map((x) => Tag.fromJson(x))),
|
|
images: List<ProductImage>.from(json['images'].map((x) => ProductImage.fromJson(x))),
|
|
attributes: List<Attribute>.from(json['attributes'].map((x) => Attribute.fromJson(x))),
|
|
defaultAttributes: json['default_attributes'],
|
|
variations: List<int>.from(json['variations']),
|
|
groupedProducts: json['grouped_products'],
|
|
menuOrder: json['menu_order'],
|
|
priceHtml: json['price_html'],
|
|
relatedIds: List<int>.from(json['related_ids']),
|
|
metaData: List<MetaData>.from(json['meta_data'].map((x) => MetaData.fromJson(x))),
|
|
stockStatus: json['stock_status'],
|
|
hasOptions: json['has_options'],
|
|
postPassword: json['post_password'],
|
|
globalUniqueId: json['global_unique_id'],
|
|
);
|
|
}
|
|
|
|
class Dimensions {
|
|
final String length;
|
|
final String width;
|
|
final String height;
|
|
|
|
Dimensions({required this.length, required this.width, required this.height});
|
|
|
|
factory Dimensions.fromJson(Map<String, dynamic> json) => Dimensions(
|
|
length: json['length'],
|
|
width: json['width'],
|
|
height: json['height'],
|
|
);
|
|
}
|
|
|
|
class Category {
|
|
final int id;
|
|
final String name;
|
|
final String slug;
|
|
|
|
Category({required this.id, required this.name, required this.slug});
|
|
|
|
factory Category.fromJson(Map<String, dynamic> json) => Category(
|
|
id: json['id'],
|
|
name: json['name'],
|
|
slug: json['slug'],
|
|
);
|
|
}
|
|
|
|
class Tag {
|
|
final int id;
|
|
final String name;
|
|
final String slug;
|
|
|
|
Tag({required this.id, required this.name, required this.slug});
|
|
|
|
factory Tag.fromJson(Map<String, dynamic> json) => Tag(
|
|
id: json['id'],
|
|
name: json['name'],
|
|
slug: json['slug'],
|
|
);
|
|
}
|
|
|
|
class ProductImage {
|
|
final int id;
|
|
final DateTime dateCreated;
|
|
final DateTime dateCreatedGmt;
|
|
final DateTime dateModified;
|
|
final DateTime dateModifiedGmt;
|
|
final String src;
|
|
final String name;
|
|
final String alt;
|
|
|
|
ProductImage({
|
|
required this.id,
|
|
required this.dateCreated,
|
|
required this.dateCreatedGmt,
|
|
required this.dateModified,
|
|
required this.dateModifiedGmt,
|
|
required this.src,
|
|
required this.name,
|
|
required this.alt,
|
|
});
|
|
|
|
factory ProductImage.fromJson(Map<String, dynamic> json) => ProductImage(
|
|
id: json['id'],
|
|
dateCreated: DateTime.parse(json['date_created']),
|
|
dateCreatedGmt: DateTime.parse(json['date_created_gmt']),
|
|
dateModified: DateTime.parse(json['date_modified']),
|
|
dateModifiedGmt: DateTime.parse(json['date_modified_gmt']),
|
|
src: json['src'],
|
|
name: json['name'],
|
|
alt: json['alt'],
|
|
);
|
|
}
|
|
|
|
class Attribute {
|
|
final int id;
|
|
final String name;
|
|
final String slug;
|
|
final int position;
|
|
final bool visible;
|
|
final bool variation;
|
|
final List<String> options;
|
|
|
|
Attribute({
|
|
required this.id,
|
|
required this.name,
|
|
required this.slug,
|
|
required this.position,
|
|
required this.visible,
|
|
required this.variation,
|
|
required this.options,
|
|
});
|
|
|
|
factory Attribute.fromJson(Map<String, dynamic> json) => Attribute(
|
|
id: json['id'],
|
|
name: json['name'],
|
|
slug: json['slug'],
|
|
position: json['position'],
|
|
visible: json['visible'],
|
|
variation: json['variation'],
|
|
options: List<String>.from(json['options']),
|
|
);
|
|
}
|
|
|
|
class MetaData {
|
|
final int id;
|
|
final String key;
|
|
final dynamic value;
|
|
|
|
MetaData({required this.id, required this.key, required this.value});
|
|
|
|
factory MetaData.fromJson(Map<String, dynamic> json) => MetaData(
|
|
id: json['id'],
|
|
key: json['key'],
|
|
value: json['value'],
|
|
);
|
|
}
|