import 'dart:convert'; DetailModel detailModelFromJson(String str) => DetailModel.fromJson(json.decode(str)); String detailModelToJson(DetailModel data) => json.encode(data.toJson()); class DetailModel { final int? id; final String? name; final String? slug; final String? permalink; final String? dateCreated; final String? dateCreatedGmt; final String? dateModified; final String? 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 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 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 int? parentId; final String? purchaseNote; final List? categories; final List? brands; final List? tags; final List? images; final List? attributes; final List? defaultAttributes; final List? variations; final List? groupedProducts; final int? menuOrder; final String? priceHtml; final List? relatedIds; final List? metaData; final String? stockStatus; final bool? hasOptions; final String? postPassword; final String? globalUniqueId; DetailModel({ this.id, this.name, this.slug, this.permalink, this.dateCreated, this.dateCreatedGmt, this.dateModified, this.dateModifiedGmt, this.type, this.status, this.featured, this.catalogVisibility, this.description, this.shortDescription, this.sku, this.price, this.regularPrice, this.salePrice, this.onSale, this.purchasable, this.totalSales, this.virtual, this.downloadable, this.downloadLimit, this.downloadExpiry, this.externalUrl, this.buttonText, this.taxStatus, this.taxClass, this.manageStock, this.stockQuantity, this.backorders, this.backordersAllowed, this.backordered, this.soldIndividually, this.weight, this.dimensions, this.shippingRequired, this.shippingTaxable, this.shippingClass, this.shippingClassId, this.reviewsAllowed, this.averageRating, this.ratingCount, this.parentId, this.purchaseNote, this.categories, this.brands, this.tags, this.images, this.attributes, this.defaultAttributes, this.variations, this.groupedProducts, this.menuOrder, this.priceHtml, this.relatedIds, this.metaData, this.stockStatus, this.hasOptions, this.postPassword, this.globalUniqueId, }); factory DetailModel.fromJson(Map json) => DetailModel( id: json["id"], name: json["name"], slug: json["slug"], permalink: json["permalink"], dateCreated: json["date_created"], dateCreatedGmt: json["date_created_gmt"], dateModified: json["date_modified"], dateModifiedGmt: 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"], 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"], soldIndividually: json["sold_individually"], weight: json["weight"], dimensions: json["dimensions"] != null ? Dimensions.fromJson(json["dimensions"]) : null, 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"], parentId: json["parent_id"], purchaseNote: json["purchase_note"], categories: json["categories"] == null ? [] : List.from( json["categories"].map((x) => Category.fromJson(x)), ), brands: json["brands"] ?? [], tags: json["tags"] == null ? [] : List.from(json["tags"].map((x) => Tag.fromJson(x))), images: json["images"] == null ? [] : List.from( json["images"].map((x) => ImageModel.fromJson(x)), ), attributes: json["attributes"] == null ? [] : List.from( json["attributes"].map((x) => Attribute.fromJson(x)), ), defaultAttributes: json["default_attributes"] ?? [], variations: json["variations"] == null ? [] : List.from(json["variations"].map((x) => x)), groupedProducts: json["grouped_products"] ?? [], menuOrder: json["menu_order"], priceHtml: json["price_html"], relatedIds: json["related_ids"] == null ? [] : List.from(json["related_ids"].map((x) => x)), metaData: json["meta_data"] == null ? [] : List.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"], ); Map toJson() => { "id": id, "name": name, "slug": slug, "permalink": permalink, "date_created": dateCreated, "date_created_gmt": dateCreatedGmt, "date_modified": dateModified, "date_modified_gmt": dateModifiedGmt, "type": type, "status": status, "featured": featured, "catalog_visibility": catalogVisibility, "description": description, "short_description": shortDescription, "sku": sku, "price": price, "regular_price": regularPrice, "sale_price": salePrice, "on_sale": onSale, "purchasable": purchasable, "total_sales": totalSales, "virtual": virtual, "downloadable": downloadable, "download_limit": downloadLimit, "download_expiry": downloadExpiry, "external_url": externalUrl, "button_text": buttonText, "tax_status": taxStatus, "tax_class": taxClass, "manage_stock": manageStock, "stock_quantity": stockQuantity, "backorders": backorders, "backorders_allowed": backordersAllowed, "backordered": backordered, "sold_individually": soldIndividually, "weight": weight, "dimensions": dimensions?.toJson(), "shipping_required": shippingRequired, "shipping_taxable": shippingTaxable, "shipping_class": shippingClass, "shipping_class_id": shippingClassId, "reviews_allowed": reviewsAllowed, "average_rating": averageRating, "rating_count": ratingCount, "parent_id": parentId, "purchase_note": purchaseNote, "categories": categories?.map((x) => x.toJson()).toList(), "brands": brands, "tags": tags?.map((x) => x.toJson()).toList(), "images": images?.map((x) => x.toJson()).toList(), "attributes": attributes?.map((x) => x.toJson()).toList(), "default_attributes": defaultAttributes, "variations": variations, "grouped_products": groupedProducts, "menu_order": menuOrder, "price_html": priceHtml, "related_ids": relatedIds, "meta_data": metaData?.map((x) => x.toJson()).toList(), "stock_status": stockStatus, "has_options": hasOptions, "post_password": postPassword, "global_unique_id": globalUniqueId, }; } class Dimensions { final String? length; final String? width; final String? height; Dimensions({this.length, this.width, this.height}); factory Dimensions.fromJson(Map json) => Dimensions( length: json["length"], width: json["width"], height: json["height"], ); Map toJson() => { "length": length, "width": width, "height": height, }; } class Category { final int? id; final String? name; final String? slug; Category({this.id, this.name, this.slug}); factory Category.fromJson(Map json) => Category(id: json["id"], name: json["name"], slug: json["slug"]); Map toJson() => {"id": id, "name": name, "slug": slug}; } class Tag { final int? id; final String? name; final String? slug; Tag({this.id, this.name, this.slug}); factory Tag.fromJson(Map json) => Tag(id: json["id"], name: json["name"], slug: json["slug"]); Map toJson() => {"id": id, "name": name, "slug": slug}; } class ImageModel { final int? id; final String? dateCreated; final String? dateModified; final String? src; final String? name; final String? alt; ImageModel({ this.id, this.dateCreated, this.dateModified, this.src, this.name, this.alt, }); factory ImageModel.fromJson(Map json) => ImageModel( id: json["id"], dateCreated: json["date_created"], dateModified: json["date_modified"], src: json["src"], name: json["name"], alt: json["alt"], ); Map toJson() => { "id": id, "date_created": dateCreated, "date_modified": dateModified, "src": src, "name": name, "alt": alt, }; } class Attribute { final int? id; final String? name; final String? slug; final int? position; final bool? visible; final bool? variation; final List? options; Attribute({ this.id, this.name, this.slug, this.position, this.visible, this.variation, this.options, }); factory Attribute.fromJson(Map json) => Attribute( id: json["id"], name: json["name"], slug: json["slug"], position: json["position"], visible: json["visible"], variation: json["variation"], options: json["options"] == null ? [] : List.from(json["options"].map((x) => x)), ); Map toJson() => { "id": id, "name": name, "slug": slug, "position": position, "visible": visible, "variation": variation, "options": options, }; } class MetaData { final int? id; final String? key; final dynamic value; MetaData({this.id, this.key, this.value}); factory MetaData.fromJson(Map json) => MetaData(id: json["id"], key: json["key"], value: json["value"]); Map toJson() => {"id": id, "key": key, "value": value}; }