// To parse this JSON data, do // // final products = productsFromJson(jsonString); import 'dart:convert'; Products productsFromJson(String str) => Products.fromJson(json.decode(str)); String productsToJson(Products data) => json.encode(data.toJson()); class Products { Products({ this.messageStatus, this.products, }); dynamic messageStatus; List products; factory Products.fromJson(Map json) => Products( messageStatus: json["MessageStatus"], products: List.from(json["products"].map((x) => Product.fromJson(x))), ); Map toJson() => { "MessageStatus": messageStatus, "products": List.from(products.map((x) => x.toJson())), }; } class Product { Product({ this.id, this.visibleIndividually, this.name, this.namen, this.localizedNames, this.shortDescription, this.shortDescriptionn, this.fullDescription, this.fullDescriptionn, this.markasNew, this.showOnHomePage, this.metaKeywords, this.metaDescription, this.metaTitle, this.allowCustomerReviews, this.approvedRatingSum, this.notApprovedRatingSum, this.approvedTotalReviews, this.notApprovedTotalReviews, this.sku, this.isRx, this.prescriptionRequired, this.rxMessage, this.rxMessagen, this.manufacturerPartNumber, this.gtin, this.isGiftCard, this.requireOtherProducts, this.automaticallyAddRequiredProducts, this.isDownload, this.unlimitedDownloads, this.maxNumberOfDownloads, this.downloadExpirationDays, this.hasSampleDownload, this.hasUserAgreement, this.isRecurring, this.recurringCycleLength, this.recurringTotalCycles, this.isRental, this.rentalPriceLength, this.isShipEnabled, this.isFreeShipping, this.shipSeparately, this.additionalShippingCharge, this.isTaxExempt, this.isTelecommunicationsOrBroadcastingOrElectronicServices, this.useMultipleWarehouses, this.manageInventoryMethodId, this.stockQuantity, this.stockAvailability, this.stockAvailabilityn, this.displayStockAvailability, this.displayStockQuantity, this.minStockQuantity, this.notifyAdminForQuantityBelow, this.allowBackInStockSubscriptions, this.orderMinimumQuantity, this.orderMaximumQuantity, this.allowedQuantities, this.allowAddingOnlyExistingAttributeCombinations, this.disableBuyButton, this.disableWishlistButton, this.availableForPreOrder, this.preOrderAvailabilityStartDateTimeUtc, this.callForPrice, this.price, this.oldPrice, this.productCost, this.specialPrice, this.specialPriceStartDateTimeUtc, this.specialPriceEndDateTimeUtc, this.customerEntersPrice, this.minimumCustomerEnteredPrice, this.maximumCustomerEnteredPrice, this.basepriceEnabled, this.basepriceAmount, this.basepriceBaseAmount, this.hasTierPrices, this.hasDiscountsApplied, this.discountName, this.discountNamen, this.discountDescription, this.discountDescriptionn, this.discountPercentage, this.currency, this.currencyn, this.weight, this.length, this.width, this.height, this.availableStartDateTimeUtc, this.availableEndDateTimeUtc, this.displayOrder, this.published, this.deleted, this.createdOnUtc, this.updatedOnUtc, this.productType, this.parentGroupedProductId, this.roleIds, this.discountIds, this.storeIds, this.manufacturerIds, this.reviews, this.images, this.attributes, this.specifications, this.associatedProductIds, this.tags, this.vendorId, this.seName, }); String id; bool visibleIndividually; String name; String namen; List localizedNames; String shortDescription; String shortDescriptionn; String fullDescription; String fullDescriptionn; bool markasNew; bool showOnHomePage; String metaKeywords; String metaDescription; String metaTitle; bool allowCustomerReviews; int approvedRatingSum; int notApprovedRatingSum; int approvedTotalReviews; int notApprovedTotalReviews; String sku; bool isRx; bool prescriptionRequired; String rxMessage; String rxMessagen; dynamic manufacturerPartNumber; dynamic gtin; bool isGiftCard; bool requireOtherProducts; bool automaticallyAddRequiredProducts; bool isDownload; bool unlimitedDownloads; int maxNumberOfDownloads; dynamic downloadExpirationDays; bool hasSampleDownload; bool hasUserAgreement; bool isRecurring; int recurringCycleLength; int recurringTotalCycles; bool isRental; int rentalPriceLength; bool isShipEnabled; bool isFreeShipping; bool shipSeparately; int additionalShippingCharge; bool isTaxExempt; bool isTelecommunicationsOrBroadcastingOrElectronicServices; bool useMultipleWarehouses; int manageInventoryMethodId; int stockQuantity; String stockAvailability; String stockAvailabilityn; bool displayStockAvailability; bool displayStockQuantity; int minStockQuantity; int notifyAdminForQuantityBelow; bool allowBackInStockSubscriptions; int orderMinimumQuantity; int orderMaximumQuantity; dynamic allowedQuantities; bool allowAddingOnlyExistingAttributeCombinations; bool disableBuyButton; bool disableWishlistButton; bool availableForPreOrder; dynamic preOrderAvailabilityStartDateTimeUtc; bool callForPrice; double price; int oldPrice; double productCost; dynamic specialPrice; dynamic specialPriceStartDateTimeUtc; dynamic specialPriceEndDateTimeUtc; bool customerEntersPrice; int minimumCustomerEnteredPrice; int maximumCustomerEnteredPrice; bool basepriceEnabled; int basepriceAmount; int basepriceBaseAmount; bool hasTierPrices; bool hasDiscountsApplied; String discountName; String discountNamen; String discountDescription; String discountDescriptionn; String discountPercentage; String currency; String currencyn; double weight; int length; int width; int height; dynamic availableStartDateTimeUtc; dynamic availableEndDateTimeUtc; int displayOrder; bool published; bool deleted; DateTime createdOnUtc; DateTime updatedOnUtc; String productType; int parentGroupedProductId; List roleIds; List discountIds; List storeIds; List manufacturerIds; List reviews; List images; List attributes; List specifications; List associatedProductIds; List tags; int vendorId; String seName; factory Product.fromJson(Map json) => Product( id: json["id"], visibleIndividually: json["visible_individually"], name: json["name"], namen: json["namen"], localizedNames: List.from(json["localized_names"].map((x) => LocalizedName.fromJson(x))), shortDescription: json["short_description"] == null ? null : json["short_description"], shortDescriptionn: json["short_descriptionn"] == null ? null : json["short_descriptionn"], fullDescription: json["full_description"], fullDescriptionn: json["full_descriptionn"], markasNew: json["markas_new"], showOnHomePage: json["show_on_home_page"], metaKeywords: json["meta_keywords"] == null ? null : json["meta_keywords"], metaDescription: json["meta_description"] == null ? null : json["meta_description"], metaTitle: json["meta_title"] == null ? null : json["meta_title"], allowCustomerReviews: json["allow_customer_reviews"], approvedRatingSum: json["approved_rating_sum"], notApprovedRatingSum: json["not_approved_rating_sum"], approvedTotalReviews: json["approved_total_reviews"], notApprovedTotalReviews: json["not_approved_total_reviews"], sku: json["sku"], isRx: json["is_rx"], prescriptionRequired: json["prescription_required"], rxMessage: json["rx_message"] == null ? null : json["rx_message"], rxMessagen: json["rx_messagen"] == null ? null : json["rx_messagen"], manufacturerPartNumber: json["manufacturer_part_number"], gtin: json["gtin"], isGiftCard: json["is_gift_card"], requireOtherProducts: json["require_other_products"], automaticallyAddRequiredProducts: json["automatically_add_required_products"], isDownload: json["is_download"], unlimitedDownloads: json["unlimited_downloads"], maxNumberOfDownloads: json["max_number_of_downloads"], downloadExpirationDays: json["download_expiration_days"], hasSampleDownload: json["has_sample_download"], hasUserAgreement: json["has_user_agreement"], isRecurring: json["is_recurring"], recurringCycleLength: json["recurring_cycle_length"], recurringTotalCycles: json["recurring_total_cycles"], isRental: json["is_rental"], rentalPriceLength: json["rental_price_length"], isShipEnabled: json["is_ship_enabled"], isFreeShipping: json["is_free_shipping"], shipSeparately: json["ship_separately"], additionalShippingCharge: json["additional_shipping_charge"], isTaxExempt: json["is_tax_exempt"], isTelecommunicationsOrBroadcastingOrElectronicServices: json["is_telecommunications_or_broadcasting_or_electronic_services"], useMultipleWarehouses: json["use_multiple_warehouses"], manageInventoryMethodId: json["manage_inventory_method_id"], stockQuantity: json["stock_quantity"], stockAvailability: json["stock_availability"], stockAvailabilityn: json["stock_availabilityn"], displayStockAvailability: json["display_stock_availability"], displayStockQuantity: json["display_stock_quantity"], minStockQuantity: json["min_stock_quantity"], notifyAdminForQuantityBelow: json["notify_admin_for_quantity_below"], allowBackInStockSubscriptions: json["allow_back_in_stock_subscriptions"], orderMinimumQuantity: json["order_minimum_quantity"], orderMaximumQuantity: json["order_maximum_quantity"], allowedQuantities: json["allowed_quantities"], allowAddingOnlyExistingAttributeCombinations: json["allow_adding_only_existing_attribute_combinations"], disableBuyButton: json["disable_buy_button"], disableWishlistButton: json["disable_wishlist_button"], availableForPreOrder: json["available_for_pre_order"], preOrderAvailabilityStartDateTimeUtc: json["pre_order_availability_start_date_time_utc"], callForPrice: json["call_for_price"], price: json["price"].toDouble(), oldPrice: json["old_price"], productCost: json["product_cost"].toDouble(), specialPrice: json["special_price"], specialPriceStartDateTimeUtc: json["special_price_start_date_time_utc"], specialPriceEndDateTimeUtc: json["special_price_end_date_time_utc"], customerEntersPrice: json["customer_enters_price"], minimumCustomerEnteredPrice: json["minimum_customer_entered_price"], maximumCustomerEnteredPrice: json["maximum_customer_entered_price"], basepriceEnabled: json["baseprice_enabled"], basepriceAmount: json["baseprice_amount"], basepriceBaseAmount: json["baseprice_base_amount"], hasTierPrices: json["has_tier_prices"], hasDiscountsApplied: json["has_discounts_applied"], discountName: json["discount_name"] == null ? null : json["discount_name"], discountNamen: json["discount_namen"] == null ? null : json["discount_namen"], discountDescription: json["discount_description"] == null ? null : json["discount_description"], discountDescriptionn: json["discount_Descriptionn"] == null ? null : json["discount_Descriptionn"], discountPercentage: json["discount_percentage"] == null ? null : json["discount_percentage"], currency: json["currency"], currencyn: json["currencyn"], weight: json["weight"].toDouble(), length: json["length"], width: json["width"], height: json["height"], availableStartDateTimeUtc: json["available_start_date_time_utc"], availableEndDateTimeUtc: json["available_end_date_time_utc"], displayOrder: json["display_order"], published: json["published"], deleted: json["deleted"], createdOnUtc: DateTime.parse(json["created_on_utc"]), updatedOnUtc: DateTime.parse(json["updated_on_utc"]), productType: json["product_type"], parentGroupedProductId: json["parent_grouped_product_id"], roleIds: List.from(json["role_ids"].map((x) => x)), discountIds: List.from(json["discount_ids"].map((x) => x)), storeIds: List.from(json["store_ids"].map((x) => x)), manufacturerIds: List.from(json["manufacturer_ids"].map((x) => x)), reviews: List.from(json["reviews"].map((x) => Review.fromJson(x))), images: List.from(json["images"].map((x) => Image.fromJson(x))), attributes: List.from(json["attributes"].map((x) => x)), specifications: List.from(json["specifications"].map((x) => Specification.fromJson(x))), associatedProductIds: List.from(json["associated_product_ids"].map((x) => x)), tags: List.from(json["tags"].map((x) => x)), vendorId: json["vendor_id"], seName: json["se_name"], ); Map toJson() => { "id": id, "visible_individually": visibleIndividually, "name": name, "namen": namen, "localized_names": List.from(localizedNames.map((x) => x.toJson())), "short_description": shortDescription == null ? null : shortDescription, "short_descriptionn": shortDescriptionn == null ? null : shortDescriptionn, "full_description": fullDescription, "full_descriptionn": fullDescriptionn, "markas_new": markasNew, "show_on_home_page": showOnHomePage, "meta_keywords": metaKeywords == null ? null : metaKeywords, "meta_description": metaDescription == null ? null : metaDescription, "meta_title": metaTitle == null ? null : metaTitle, "allow_customer_reviews": allowCustomerReviews, "approved_rating_sum": approvedRatingSum, "not_approved_rating_sum": notApprovedRatingSum, "approved_total_reviews": approvedTotalReviews, "not_approved_total_reviews": notApprovedTotalReviews, "sku": sku, "is_rx": isRx, "prescription_required": prescriptionRequired, "rx_message": rxMessage == null ? null : rxMessage, "rx_messagen": rxMessagen == null ? null : rxMessagen, "manufacturer_part_number": manufacturerPartNumber, "gtin": gtin, "is_gift_card": isGiftCard, "require_other_products": requireOtherProducts, "automatically_add_required_products": automaticallyAddRequiredProducts, "is_download": isDownload, "unlimited_downloads": unlimitedDownloads, "max_number_of_downloads": maxNumberOfDownloads, "download_expiration_days": downloadExpirationDays, "has_sample_download": hasSampleDownload, "has_user_agreement": hasUserAgreement, "is_recurring": isRecurring, "recurring_cycle_length": recurringCycleLength, "recurring_total_cycles": recurringTotalCycles, "is_rental": isRental, "rental_price_length": rentalPriceLength, "is_ship_enabled": isShipEnabled, "is_free_shipping": isFreeShipping, "ship_separately": shipSeparately, "additional_shipping_charge": additionalShippingCharge, "is_tax_exempt": isTaxExempt, "is_telecommunications_or_broadcasting_or_electronic_services": isTelecommunicationsOrBroadcastingOrElectronicServices, "use_multiple_warehouses": useMultipleWarehouses, "manage_inventory_method_id": manageInventoryMethodId, "stock_quantity": stockQuantity, "stock_availability": stockAvailability, "stock_availabilityn": stockAvailabilityn, "display_stock_availability": displayStockAvailability, "display_stock_quantity": displayStockQuantity, "min_stock_quantity": minStockQuantity, "notify_admin_for_quantity_below": notifyAdminForQuantityBelow, "allow_back_in_stock_subscriptions": allowBackInStockSubscriptions, "order_minimum_quantity": orderMinimumQuantity, "order_maximum_quantity": orderMaximumQuantity, "allowed_quantities": allowedQuantities, "allow_adding_only_existing_attribute_combinations": allowAddingOnlyExistingAttributeCombinations, "disable_buy_button": disableBuyButton, "disable_wishlist_button": disableWishlistButton, "available_for_pre_order": availableForPreOrder, "pre_order_availability_start_date_time_utc": preOrderAvailabilityStartDateTimeUtc, "call_for_price": callForPrice, "price": price, "old_price": oldPrice, "product_cost": productCost, "special_price": specialPrice, "special_price_start_date_time_utc": specialPriceStartDateTimeUtc, "special_price_end_date_time_utc": specialPriceEndDateTimeUtc, "customer_enters_price": customerEntersPrice, "minimum_customer_entered_price": minimumCustomerEnteredPrice, "maximum_customer_entered_price": maximumCustomerEnteredPrice, "baseprice_enabled": basepriceEnabled, "baseprice_amount": basepriceAmount, "baseprice_base_amount": basepriceBaseAmount, "has_tier_prices": hasTierPrices, "has_discounts_applied": hasDiscountsApplied, "discount_name": discountName == null ? null : discountName, "discount_namen": discountNamen == null ? null : discountNamen, "discount_description": discountDescription == null ? null : discountDescription, "discount_Descriptionn": discountDescriptionn == null ? null : discountDescriptionn, "discount_percentage": discountPercentage == null ? null : discountPercentage, "currency": currency, "currencyn": currencyn, "weight": weight, "length": length, "width": width, "height": height, "available_start_date_time_utc": availableStartDateTimeUtc, "available_end_date_time_utc": availableEndDateTimeUtc, "display_order": displayOrder, "published": published, "deleted": deleted, "created_on_utc": createdOnUtc.toIso8601String(), "updated_on_utc": updatedOnUtc.toIso8601String(), "product_type": productType, "parent_grouped_product_id": parentGroupedProductId, "role_ids": List.from(roleIds.map((x) => x)), "discount_ids": List.from(discountIds.map((x) => x)), "store_ids": List.from(storeIds.map((x) => x)), "manufacturer_ids": List.from(manufacturerIds.map((x) => x)), "reviews": List.from(reviews.map((x) => x.toJson())), "images": List.from(images.map((x) => x.toJson())), "attributes": List.from(attributes.map((x) => x)), "specifications": List.from(specifications.map((x) => x.toJson())), "associated_product_ids": List.from(associatedProductIds.map((x) => x)), "tags": List.from(tags.map((x) => x)), "vendor_id": vendorId, "se_name": seName, }; } class Image { Image({ this.id, this.position, this.src, this.thumb, this.attachment, }); int id; int position; String src; String thumb; String attachment; factory Image.fromJson(Map json) => Image( id: json["id"], position: json["position"], src: json["src"], thumb: json["thumb"], attachment: json["attachment"], ); Map toJson() => { "id": id, "position": position, "src": src, "thumb": thumb, "attachment": attachment, }; } class LocalizedName { LocalizedName({ this.languageId, this.localizedName, }); int languageId; String localizedName; factory LocalizedName.fromJson(Map json) => LocalizedName( languageId: json["language_id"], localizedName: json["localized_name"], ); Map toJson() => { "language_id": languageId, "localized_name": localizedName, }; } class Review { Review({ this.id, this.position, this.reviewId, this.customerId, this.productId, this.storeId, this.isApproved, this.title, this.reviewText, this.replyText, this.rating, this.helpfulYesTotal, this.helpfulNoTotal, this.createdOnUtc, this.customer, this.product, }); int id; int position; int reviewId; int customerId; int productId; int storeId; bool isApproved; String title; String reviewText; dynamic replyText; int rating; int helpfulYesTotal; int helpfulNoTotal; DateTime createdOnUtc; Customer customer; dynamic product; factory Review.fromJson(Map json) => Review( id: json["id"], position: json["position"], reviewId: json["review_id"], customerId: json["customer_id"], productId: json["product_id"], storeId: json["store_id"], isApproved: json["is_approved"], title: json["title"], reviewText: json["review_text"], replyText: json["reply_text"], rating: json["rating"], helpfulYesTotal: json["helpful_yes_total"], helpfulNoTotal: json["helpful_no_total"], createdOnUtc: DateTime.parse(json["created_on_utc"]), customer: Customer.fromJson(json["customer"]), product: json["product"], ); Map toJson() => { "id": id, "position": position, "review_id": reviewId, "customer_id": customerId, "product_id": productId, "store_id": storeId, "is_approved": isApproved, "title": title, "review_text": reviewText, "reply_text": replyText, "rating": rating, "helpful_yes_total": helpfulYesTotal, "helpful_no_total": helpfulNoTotal, "created_on_utc": createdOnUtc.toIso8601String(), "customer": customer.toJson(), "product": product, }; } class Customer { Customer({ this.fileNumber, this.iqamaNumber, this.isOutSa, this.patientType, this.gender, this.birthDate, this.phone, this.countryCode, this.yahalaAccountno, this.billingAddress, this.shippingAddress, this.addresses, this.id, this.username, this.email, this.firstName, this.lastName, this.languageId, this.adminComment, this.isTaxExempt, this.hasShoppingCartItems, this.active, this.deleted, this.isSystemAccount, this.systemName, this.lastIpAddress, this.createdOnUtc, this.lastLoginDateUtc, this.lastActivityDateUtc, this.registeredInStoreId, this.roleIds, }); dynamic fileNumber; dynamic iqamaNumber; int isOutSa; int patientType; dynamic gender; DateTime birthDate; dynamic phone; dynamic countryCode; dynamic yahalaAccountno; dynamic billingAddress; dynamic shippingAddress; List addresses; String id; Username username; Email email; dynamic firstName; dynamic lastName; dynamic languageId; dynamic adminComment; dynamic isTaxExempt; dynamic hasShoppingCartItems; dynamic active; dynamic deleted; dynamic isSystemAccount; dynamic systemName; dynamic lastIpAddress; dynamic createdOnUtc; dynamic lastLoginDateUtc; dynamic lastActivityDateUtc; dynamic registeredInStoreId; List roleIds; factory Customer.fromJson(Map json) => Customer( fileNumber: json["file_number"], iqamaNumber: json["iqama_number"], isOutSa: json["is_out_sa"], patientType: json["patient_type"], gender: json["gender"], birthDate: DateTime.parse(json["birth_date"]), phone: json["phone"], countryCode: json["country_code"], yahalaAccountno: json["yahala_accountno"], billingAddress: json["billing_address"], shippingAddress: json["shipping_address"], addresses: List.from(json["addresses"].map((x) => x)), id: json["id"], username: usernameValues.map[json["username"]], email: emailValues.map[json["email"]], firstName: json["first_name"], lastName: json["last_name"], languageId: json["language_id"], adminComment: json["admin_comment"], isTaxExempt: json["is_tax_exempt"], hasShoppingCartItems: json["has_shopping_cart_items"], active: json["active"], deleted: json["deleted"], isSystemAccount: json["is_system_account"], systemName: json["system_name"], lastIpAddress: json["last_ip_address"], createdOnUtc: json["created_on_utc"], lastLoginDateUtc: json["last_login_date_utc"], lastActivityDateUtc: json["last_activity_date_utc"], registeredInStoreId: json["registered_in_store_id"], roleIds: List.from(json["role_ids"].map((x) => x)), ); Map toJson() => { "file_number": fileNumber, "iqama_number": iqamaNumber, "is_out_sa": isOutSa, "patient_type": patientType, "gender": gender, "birth_date": birthDate.toIso8601String(), "phone": phone, "country_code": countryCode, "yahala_accountno": yahalaAccountno, "billing_address": billingAddress, "shipping_address": shippingAddress, "addresses": List.from(addresses.map((x) => x)), "id": id, "username": usernameValues.reverse[username], "email": emailValues.reverse[email], "first_name": firstName, "last_name": lastName, "language_id": languageId, "admin_comment": adminComment, "is_tax_exempt": isTaxExempt, "has_shopping_cart_items": hasShoppingCartItems, "active": active, "deleted": deleted, "is_system_account": isSystemAccount, "system_name": systemName, "last_ip_address": lastIpAddress, "created_on_utc": createdOnUtc, "last_login_date_utc": lastLoginDateUtc, "last_activity_date_utc": lastActivityDateUtc, "registered_in_store_id": registeredInStoreId, "role_ids": List.from(roleIds.map((x) => x)), }; } enum Email { MEMO17299_GMAIL_COM, STEVE_GATES_NOP_COMMERCE_COM } final emailValues = EnumValues({ "Memo17299@gmail.com": Email.MEMO17299_GMAIL_COM, "steve_gates@nopCommerce.com": Email.STEVE_GATES_NOP_COMMERCE_COM }); enum Username { AMAL_26, STEVE_GATES_NOP_COMMERCE_COM } final usernameValues = EnumValues({ "amal_26": Username.AMAL_26, "steve_gates@nopCommerce.com": Username.STEVE_GATES_NOP_COMMERCE_COM }); class Specification { Specification({ this.id, this.displayOrder, this.defaultValue, this.defaultValuen, this.name, this.nameN, }); int id; int displayOrder; String defaultValue; String defaultValuen; Name name; NameN nameN; factory Specification.fromJson(Map json) => Specification( id: json["id"], displayOrder: json["display_order"], defaultValue: json["default_value"], defaultValuen: json["default_valuen"], name: nameValues.map[json["name"]], nameN: nameNValues.map[json["nameN"]], ); Map toJson() => { "id": id, "display_order": displayOrder, "default_value": defaultValue, "default_valuen": defaultValuen, "name": nameValues.reverse[name], "nameN": nameNValues.reverse[nameN], }; } enum Name { PRIMARY_UNIT_OF_MEASURE, BRAND, MANUFACTURER_COUNTRY_NAME, STORAGE, COMPOSITION, SPF } final nameValues = EnumValues({ "BRAND": Name.BRAND, "COMPOSITION": Name.COMPOSITION, "MANUFACTURER COUNTRY NAME": Name.MANUFACTURER_COUNTRY_NAME, "Primary Unit Of Measure": Name.PRIMARY_UNIT_OF_MEASURE, "SPF": Name.SPF, "STORAGE": Name.STORAGE }); enum NameN { EMPTY, NAME_N, PURPLE, FLUFFY, TENTACLED, SPF } final nameNValues = EnumValues({ "وحدة القياس الأولية": NameN.EMPTY, "تخزين": NameN.FLUFFY, "علامة تجارية": NameN.NAME_N, "اسم البلد المصنع": NameN.PURPLE, "SPF": NameN.SPF, "المكونات": NameN.TENTACLED }); class EnumValues { Map map; Map reverseMap; EnumValues(this.map); Map get reverse { if (reverseMap == null) { reverseMap = map.map((k, v) => new MapEntry(v, k)); } return reverseMap; } }