61 lines
1.3 KiB
Dart
61 lines
1.3 KiB
Dart
class Product {
|
|
final int id;
|
|
final String name;
|
|
final String category;
|
|
final int price;
|
|
final int stock;
|
|
final String status; // 'tersedia', 'rendah', 'kritis'
|
|
|
|
Product({
|
|
required this.id,
|
|
required this.name,
|
|
required this.category,
|
|
required this.price,
|
|
required this.stock,
|
|
this.status = 'tersedia',
|
|
});
|
|
|
|
factory Product.fromJson(Map<String, dynamic> json) {
|
|
return Product(
|
|
id: json['id'] as int,
|
|
name: json['name'] as String,
|
|
category: json['category'] as String,
|
|
price: json['price'] as int,
|
|
stock: json['stock'] as int,
|
|
status: json['status'] as String? ?? 'tersedia',
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'name': name,
|
|
'category': category,
|
|
'price': price,
|
|
'stock': stock,
|
|
'status': status,
|
|
};
|
|
}
|
|
|
|
Product copyWith({
|
|
int? id,
|
|
String? name,
|
|
String? category,
|
|
int? price,
|
|
int? stock,
|
|
String? status,
|
|
}) {
|
|
return Product(
|
|
id: id ?? this.id,
|
|
name: name ?? this.name,
|
|
category: category ?? this.category,
|
|
price: price ?? this.price,
|
|
stock: stock ?? this.stock,
|
|
status: status ?? this.status,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() => 'Product(id: $id, name: $name, stock: $stock)';
|
|
}
|