更新应用配置以添加主裁判计分 H5 链接;
重构事件注册模型以支持团队成员信息,并简化事件信息页面的导航逻辑。
This commit is contained in:
@@ -43,6 +43,27 @@ class EventProfile {
|
||||
final String avatarLabel;
|
||||
}
|
||||
|
||||
class EventTeamMember {
|
||||
const EventTeamMember({
|
||||
required this.userId,
|
||||
required this.name,
|
||||
required this.isLeader,
|
||||
});
|
||||
|
||||
final String userId;
|
||||
final String name;
|
||||
final bool isLeader;
|
||||
|
||||
factory EventTeamMember.fromJson(Map<dynamic, dynamic> json) {
|
||||
final map = Map<String, dynamic>.from(json);
|
||||
return EventTeamMember(
|
||||
userId: _readString(map, const ['userId']),
|
||||
name: _readString(map, const ['name']),
|
||||
isLeader: _readBool(map, const ['isLeader']),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class EventRegistrationList {
|
||||
const EventRegistrationList({
|
||||
required this.userId,
|
||||
@@ -111,7 +132,7 @@ class EventRegistrationItem {
|
||||
this.completed = false,
|
||||
this.opponentId = '',
|
||||
this.opponentName = '',
|
||||
this.teamMembers,
|
||||
this.teamMembers = const [],
|
||||
this.userId = '',
|
||||
this.playerName = '',
|
||||
this.playerPhone = '',
|
||||
@@ -129,18 +150,24 @@ class EventRegistrationItem {
|
||||
final bool completed;
|
||||
final String opponentId;
|
||||
final String opponentName;
|
||||
final List<dynamic>? teamMembers;
|
||||
final List<EventTeamMember> teamMembers;
|
||||
|
||||
/// 来自报名列表父级,不在 item JSON 内
|
||||
final String userId;
|
||||
final String playerName;
|
||||
final String playerPhone;
|
||||
|
||||
String get scheduleTime =>
|
||||
_formatScheduleTime(matchStartTime, matchEndTime);
|
||||
String get scheduleTime => _formatScheduleTime(matchStartTime, matchEndTime);
|
||||
|
||||
String? get statusLabel => completed ? '已完成' : null;
|
||||
|
||||
EventTeamMember? get teamLeader {
|
||||
for (final member in teamMembers) {
|
||||
if (member.isLeader) return member;
|
||||
}
|
||||
return teamMembers.isEmpty ? null : teamMembers.first;
|
||||
}
|
||||
|
||||
factory EventRegistrationItem.fromJson(
|
||||
Map<dynamic, dynamic> json, {
|
||||
String userId = '',
|
||||
@@ -164,8 +191,11 @@ class EventRegistrationItem {
|
||||
opponentId: _readString(map, const ['opponentId']),
|
||||
opponentName: _readString(map, const ['opponentName']),
|
||||
teamMembers: teamMembersRaw is List
|
||||
? List<dynamic>.from(teamMembersRaw)
|
||||
: null,
|
||||
? teamMembersRaw
|
||||
.whereType<Map>()
|
||||
.map(EventTeamMember.fromJson)
|
||||
.toList(growable: false)
|
||||
: const [],
|
||||
userId: userId,
|
||||
playerName: playerName,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user