72 lines
1.7 KiB
Dart
72 lines
1.7 KiB
Dart
import 'dart:convert';
|
|
|
|
class User {
|
|
final String id;
|
|
final String email;
|
|
final String? name;
|
|
final String? avatarUrl;
|
|
final String? phoneNumber;
|
|
final DateTime? createdAt;
|
|
final DateTime? updatedAt;
|
|
|
|
User({
|
|
required this.id,
|
|
required this.email,
|
|
this.name,
|
|
this.avatarUrl,
|
|
this.phoneNumber,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
});
|
|
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'id': id,
|
|
'email': email,
|
|
'name': name,
|
|
'avatar_url': avatarUrl,
|
|
'phone_number': phoneNumber,
|
|
'created_at': createdAt?.toIso8601String(),
|
|
'updated_at': updatedAt?.toIso8601String(),
|
|
};
|
|
}
|
|
|
|
factory User.fromMap(Map<String, dynamic> map) {
|
|
return User(
|
|
id: map['id'] ?? '',
|
|
email: map['email'] ?? '',
|
|
name: map['name'],
|
|
avatarUrl: map['avatar_url'],
|
|
phoneNumber: map['phone_number'],
|
|
createdAt:
|
|
map['created_at'] != null ? DateTime.parse(map['created_at']) : null,
|
|
updatedAt:
|
|
map['updated_at'] != null ? DateTime.parse(map['updated_at']) : null,
|
|
);
|
|
}
|
|
|
|
String toJson() => json.encode(toMap());
|
|
|
|
factory User.fromJson(String source) => User.fromMap(json.decode(source));
|
|
|
|
User copyWith({
|
|
String? id,
|
|
String? email,
|
|
String? name,
|
|
String? avatarUrl,
|
|
String? phoneNumber,
|
|
DateTime? createdAt,
|
|
DateTime? updatedAt,
|
|
}) {
|
|
return User(
|
|
id: id ?? this.id,
|
|
email: email ?? this.email,
|
|
name: name ?? this.name,
|
|
avatarUrl: avatarUrl ?? this.avatarUrl,
|
|
phoneNumber: phoneNumber ?? this.phoneNumber,
|
|
createdAt: createdAt ?? this.createdAt,
|
|
updatedAt: updatedAt ?? this.updatedAt,
|
|
);
|
|
}
|
|
}
|