
- Tambahkan dependensi utama: GetX, Supabase, SharedPreferences - Konfigurasi struktur awal aplikasi dengan GetX - Inisialisasi layanan Supabase - Perbarui konfigurasi plugin untuk berbagai platform - Ganti template default dengan struktur aplikasi baru
82 lines
1.9 KiB
Dart
82 lines
1.9 KiB
Dart
class UserModel {
|
|
final String id;
|
|
final String email;
|
|
final String? name;
|
|
final String? avatar;
|
|
final String role;
|
|
final bool isActive;
|
|
final DateTime? lastLogin;
|
|
final DateTime? createdAt;
|
|
final DateTime? updatedAt;
|
|
|
|
UserModel({
|
|
required this.id,
|
|
required this.email,
|
|
this.name,
|
|
this.avatar,
|
|
required this.role,
|
|
this.isActive = true,
|
|
this.lastLogin,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
});
|
|
|
|
factory UserModel.fromJson(Map<String, dynamic> json) {
|
|
return UserModel(
|
|
id: json['id'],
|
|
email: json['email'],
|
|
name: json['name'],
|
|
avatar: json['avatar'],
|
|
role: json['role'] ?? 'WARGA',
|
|
isActive: json['is_active'] ?? true,
|
|
lastLogin: json['last_login'] != null
|
|
? DateTime.parse(json['last_login'])
|
|
: null,
|
|
createdAt: json['CREATED_AT'] != null
|
|
? DateTime.parse(json['CREATED_AT'])
|
|
: null,
|
|
updatedAt: json['UPDATED_AT'] != null
|
|
? DateTime.parse(json['UPDATED_AT'])
|
|
: null,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'email': email,
|
|
'name': name,
|
|
'avatar': avatar,
|
|
'role': role,
|
|
'is_active': isActive,
|
|
'last_login': lastLogin?.toIso8601String(),
|
|
'CREATED_AT': createdAt?.toIso8601String(),
|
|
'UPDATED_AT': updatedAt?.toIso8601String(),
|
|
};
|
|
}
|
|
|
|
UserModel copyWith({
|
|
String? id,
|
|
String? email,
|
|
String? name,
|
|
String? avatar,
|
|
String? role,
|
|
bool? isActive,
|
|
DateTime? lastLogin,
|
|
DateTime? createdAt,
|
|
DateTime? updatedAt,
|
|
}) {
|
|
return UserModel(
|
|
id: id ?? this.id,
|
|
email: email ?? this.email,
|
|
name: name ?? this.name,
|
|
avatar: avatar ?? this.avatar,
|
|
role: role ?? this.role,
|
|
isActive: isActive ?? this.isActive,
|
|
lastLogin: lastLogin ?? this.lastLogin,
|
|
createdAt: createdAt ?? this.createdAt,
|
|
updatedAt: updatedAt ?? this.updatedAt,
|
|
);
|
|
}
|
|
}
|