59 lines
1.6 KiB
Dart
59 lines
1.6 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
class ContactModel extends Equatable {
|
|
// English: Unique identifier for the contact.
|
|
// Arabic: المعرف الفريد لجهة الاتصال.
|
|
final int id;
|
|
|
|
// English: Name of the contact.
|
|
// Arabic: اسم جهة الاتصال.
|
|
final String name;
|
|
|
|
// English: Phone number.
|
|
// Arabic: رقم الهاتف.
|
|
final String phone;
|
|
|
|
// English: Optional email address.
|
|
// Arabic: البريد الإلكتروني الاختياري.
|
|
final String? email;
|
|
|
|
// English: Optional descriptive notes.
|
|
// Arabic: ملاحظات وصفية اختيارية.
|
|
final String? notes;
|
|
|
|
const ContactModel({
|
|
required this.id,
|
|
required this.name,
|
|
required this.phone,
|
|
this.email,
|
|
this.notes,
|
|
});
|
|
|
|
// English: Factory constructor to parse ContactModel from JSON map.
|
|
// Arabic: منشئ المصنع لتحليل نموذج جهة الاتصال من خريطة جيسون.
|
|
factory ContactModel.fromJson(Map<String, dynamic> json) {
|
|
return ContactModel(
|
|
id: json['id'] as int? ?? 0,
|
|
name: json['name'] as String? ?? '',
|
|
phone: json['phone'] as String? ?? '',
|
|
email: json['email'] as String?,
|
|
notes: json['notes'] as String?,
|
|
);
|
|
}
|
|
|
|
// English: Convert model to JSON map.
|
|
// Arabic: تحويل النموذج إلى خريطة جيسون.
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'name': name,
|
|
'phone': phone,
|
|
'email': email,
|
|
'notes': notes,
|
|
};
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [id, name, phone, email, notes];
|
|
}
|