Untitled

 avatar
unknown
plain_text
5 months ago
2.0 kB
3
Indexable
import 'package:flutter_dotenv/flutter_dotenv.dart';
class Product {
  final String id;
  final String sku;
  final int quantity;
  final Map<String, String> name;
  final Map<String, String> description;
  final List<String> images;
  final double publicPrice;
  final List<String> categories;
  final bool isVariant;

  Product({
    required this.id,
    required this.sku,
    required this.quantity,
    required this.name,
    required this.description,
    required this.images,
    required this.publicPrice,
    required this.categories,
    required this.isVariant
  });

  factory Product.fromJson(Map<String, dynamic> json) {
    return Product(
      id: json['_id'] ?? '',
      sku: json['sku'] ?? '',
      quantity: json['quantity'] ?? 0,
      name: Map<String, String>.from(json['name'] ?? {}),
      description: Map<String, String>.from(json['description'] ?? {}),
      images: List<String>.from(json['images'] ?? []),
      publicPrice: json['pricing']?['publicPrice']?.toDouble() ?? 0.0,
      categories: (json['categories'] as List<dynamic>?)
              ?.map((cat) => cat['category'] as String)
              .toList() ??
          [],
      isVariant: json['isvariant'] ?? false,
    );
  }

  Product copyWith({
    String? id,
    String? sku,
    int? quantity,
    Map<String, String>? name,
    Map<String, String>? description,
    List<String>? images,
    double? publicPrice,
    List<String>? categories,
    bool? isVariant,
  }) {
    return Product(
      id: id ?? this.id,
      sku: sku ?? this.sku,
      quantity: quantity ?? this.quantity,
      name: name ?? this.name,
      description: description ?? this.description,
      images: images ?? this.images,
      publicPrice: publicPrice ?? this.publicPrice,
      categories: categories ?? this.categories,
      isVariant: isVariant ?? this.isVariant,
    );
  }

  List<String> get imageUrls {
    return images
        .map((imageId) => '${dotenv.env['API_HOST']}:${dotenv.env['API_PORT']}/uploadimg/$imageId')
        .toList();
  }
}
Editor is loading...
Leave a Comment