import 'product_image.dart'; class Product { final int id; final String publicId; final String code; final String? barcode; final String name; final String? series; final String? spec; final String unit; final int? categoryId; final String? brand; final double? purchasePrice; final double? salePrice; final int? minStock; final String? description; final String? remark; final Map? customFields; final List images; const Product({ required this.id, this.publicId = '', required this.code, this.barcode, required this.name, this.series, this.spec, required this.unit, this.categoryId, this.brand, this.purchasePrice, this.salePrice, this.minStock, this.description, this.remark, this.customFields, this.images = const [], }); factory Product.fromJson(Map json) => Product( id: (json['id'] as num).toInt(), publicId: json['public_id'] as String? ?? '', code: json['code'] as String? ?? '', barcode: json['barcode'] as String?, name: json['name'] as String, series: json['series'] as String?, spec: json['spec'] as String?, unit: json['unit'] as String? ?? 'δΈͺ', categoryId: json['category_id'] != null ? (json['category_id'] as num).toInt() : null, brand: json['brand'] as String?, purchasePrice: json['purchase_price'] != null ? (json['purchase_price'] as num).toDouble() : null, salePrice: json['sale_price'] != null ? (json['sale_price'] as num).toDouble() : null, minStock: json['min_stock'] != null ? (json['min_stock'] as num).toInt() : null, description: json['description'] as String?, remark: json['remark'] as String?, customFields: json['custom_fields'] as Map?, images: (json['images'] as List?) ?.map((e) => ProductImage.fromJson(e as Map)) .toList() ?? [], ); Map toJson() => { 'code': code, if (barcode != null) 'barcode': barcode, 'name': name, if (series != null) 'series': series, if (spec != null) 'spec': spec, 'unit': unit, if (categoryId != null) 'category_id': categoryId, if (brand != null) 'brand': brand, if (purchasePrice != null) 'purchase_price': purchasePrice, if (salePrice != null) 'sale_price': salePrice, if (minStock != null) 'min_stock': minStock, 'description': description ?? '', if (remark != null) 'remark': remark, }; }