Files
video/app/lib/models/user_model.dart
2026-10-15 20:36:59 +08:00

43 lines
1.4 KiB
Dart

/// 用户模型(登录/注册响应的 user 字段与 GET /users/me 的超集,字段可空按需取)
class UserModel {
UserModel({
required this.userId,
this.phone,
this.email,
this.nickname = '',
this.avatarUrl = '',
this.bio = '',
this.gender = 0,
this.isMember = false,
this.memberPlan,
this.memberExpireAt,
this.points = 0,
});
final int userId;
final String? phone;
final String? email;
final String nickname;
final String avatarUrl;
final String bio;
final int gender; // 0未知 1男 2女
final bool isMember;
final String? memberPlan; // monthly/yearly/lifetime/trial...
final String? memberExpireAt; // yyyy-MM-dd HH:mm:ss
final int points;
factory UserModel.fromJson(Map<String, dynamic> json) => UserModel(
userId: (json['user_id'] ?? json['id']) as int,
phone: json['phone'] as String?,
email: json['email'] as String?,
nickname: (json['nickname'] as String?) ?? '',
avatarUrl: (json['avatar_url'] as String?) ?? '',
bio: (json['bio'] as String?) ?? '',
gender: (json['gender'] as num?)?.toInt() ?? 0,
isMember: (json['is_member'] as bool?) ?? false,
memberPlan: json['member_plan'] as String?,
memberExpireAt: json['member_expire_at'] as String?,
points: (json['points'] as num?)?.toInt() ?? 0,
);
}