Files
Ichino/lib/models/user_preview.dart
Bad0RANG3 e9357f5969 refactor: 拆分主页与公共组件,扫码登录改走 WinHTTP
- 抽出 lib/core 的日期/JSON 工具,收敛各页重复解析
- 主页与音乐风险页拆成组件,风险功能共用一套运行框架
- 修复设置页作为主页页签保存时弹掉根路由导致的黑屏
- 登录对齐 Astral aimedb 协议:84 位二维码校验、签名与请求头修正,
  补 GlobalSign 中间证书;Windows 改用 WinHTTP 绕过服务端对
  BoringSSL 的 TLS 指纹拦截(证书校验保持开启)
- 补开发预览数据与测试
2026-10-25 15:51:10 +08:00

79 lines
2.5 KiB
Dart

import '../core/json_value.dart';
class UserPreviewDataBean {
final int userId;
final String userName;
final bool isLogin;
/// 机台侧这次登录的 `loginId`(组装 UpsertUserAll 时当 playlogId 用)。
/// 服务器没带这个字段时是 0。
final int loginId;
final String lastGameId;
final String lastRomVersion;
final String lastDataVersion;
final String lastLoginDate;
final String lastPlayDate;
final int playerRating;
final int nameplateId;
final int iconId;
final int trophyId;
final bool isNetMember;
final bool isInherit;
final int totalAwake;
final int dispRate;
final String dailyBonusDate;
final int headPhoneVolume;
final int banState;
final int errorId;
const UserPreviewDataBean({
required this.userId,
required this.userName,
required this.isLogin,
this.loginId = 0,
required this.lastGameId,
required this.lastRomVersion,
required this.lastDataVersion,
required this.lastLoginDate,
required this.lastPlayDate,
required this.playerRating,
required this.nameplateId,
required this.iconId,
required this.trophyId,
required this.isNetMember,
required this.isInherit,
required this.totalAwake,
required this.dispRate,
required this.dailyBonusDate,
required this.headPhoneVolume,
required this.banState,
required this.errorId,
});
factory UserPreviewDataBean.fromJson(Map<String, dynamic> json) {
return UserPreviewDataBean(
userId: jsonInt(json['userId']),
userName: jsonString(json['userName']),
isLogin: jsonBool(json['isLogin']),
loginId: jsonInt(json['loginId']),
lastGameId: jsonString(json['lastGameId']),
lastRomVersion: jsonString(json['lastRomVersion']),
lastDataVersion: jsonString(json['lastDataVersion']),
lastLoginDate: jsonString(json['lastLoginDate']),
lastPlayDate: jsonString(json['lastPlayDate']),
playerRating: jsonInt(json['playerRating']),
nameplateId: jsonInt(json['nameplateId']),
iconId: jsonInt(json['iconId']),
trophyId: jsonInt(json['trophyId']),
isNetMember: jsonBool(json['isNetMember']),
isInherit: jsonBool(json['isInherit']),
totalAwake: jsonInt(json['totalAwake']),
dispRate: jsonInt(json['dispRate']),
dailyBonusDate: jsonString(json['dailyBonusDate']),
headPhoneVolume: jsonInt(json['headPhoneVolume']),
banState: jsonInt(json['banState']),
errorId: jsonInt(json['errorId']),
);
}
}