This commit is contained in:
2025-11-21 17:58:56 +09:00
parent e2bff7279a
commit dbf70e01f2
158 changed files with 6687 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
import 'package:equatable/equatable.dart';
class UserInfo extends Equatable {
final String id;
final String nickname;
final int avatarIndex; // 프로필 이미지 대신 사용할 아바타 번호 (0~9 등)
final int colorValue; // 유저 고유 컬러 (ARGB int)
const UserInfo({
required this.id,
required this.nickname,
this.avatarIndex = 0,
this.colorValue = 0xFF2196F3, // 기본값 Blue
});
/// JSON -> Object 변환 (네트워크 수신 시)
factory UserInfo.fromJson(Map<String, dynamic> json) {
return UserInfo(
id: json['id'] as String,
nickname: json['nickname'] as String,
avatarIndex: json['avatarIndex'] as int? ?? 0,
colorValue: json['colorValue'] as int? ?? 0xFF2196F3,
);
}
/// Object -> JSON 변환 (네트워크 전송 시)
Map<String, dynamic> toJson() {
return {
'id': id,
'nickname': nickname,
'avatarIndex': avatarIndex,
'colorValue': colorValue,
};
}
/// 복사본 생성 (불변 객체 수정용)
UserInfo copyWith({
String? id,
String? nickname,
int? avatarIndex,
int? colorValue,
}) {
return UserInfo(
id: id ?? this.id,
nickname: nickname ?? this.nickname,
avatarIndex: avatarIndex ?? this.avatarIndex,
colorValue: colorValue ?? this.colorValue,
);
}
@override
List<Object?> get props => [id, nickname, avatarIndex, colorValue];
}