优化登录数据解析过程中,String 类型无法转换为 int? 类型

This commit is contained in:
sky.min 2026-02-04 13:54:58 +08:00
parent 099e9e180f
commit 7376afe9a1
5 changed files with 48 additions and 20 deletions

View File

@ -17,22 +17,36 @@ class LoginData {
this.starchart}); this.starchart});
LoginData.fromJson(dynamic json) { LoginData.fromJson(dynamic json) {
accessToken = json['accessToken']; accessToken = json['accessToken'] as String?;
userid = json['userid']; userid = _parseInt(json['userid']);
expiresAt = json['expiresAt']; expiresAt = _parseInt(json['expiresAt']);
expiresAtString = json['expiresAtString']; expiresAtString = json['expiresAtString'] as String?;
mobile = json['mobile']; mobile = json['mobile'] as String?;
headUrl = json['headUrl']; headUrl = json['headUrl'] as String?;
email = json['email']; email = json['email'] as String?;
nickname = json['nickname']; nickname = json['nickname'] as String?;
haveSafeAnswer = json['haveSafeAnswer']; haveSafeAnswer = json['haveSafeAnswer'] as bool?;
uid = json['uid']; uid = _parseInt(json['uid']);
isVip = json['isVip']; isVip = _parseInt(json['isVip']);
starchart = json['starchart'] != null starchart = json['starchart'] != null
? Starchart.fromJson(json['starchart']) ? Starchart.fromJson(json['starchart'])
: null; : null;
} }
//
int? _parseInt(dynamic value) {
if (value == null) return null;
if (value is int) return value;
if (value is String) {
try {
return int.parse(value);
} catch (e) {
return null;
}
}
return null;
}
String? accessToken; String? accessToken;
int? userid; int? userid;
int? expiresAt; int? expiresAt;

View File

@ -8,10 +8,24 @@ class LoginEntity {
this.errorMsg,}); this.errorMsg,});
LoginEntity.fromJson(dynamic json) { LoginEntity.fromJson(dynamic json) {
description = json['description']; description = json['description'] as String?;
errorCode = json['errorCode']; errorCode = _parseInt(json['errorCode']);
data = json['data'] != null ? LoginData.fromJson(json['data']) : null; data = json['data'] != null ? LoginData.fromJson(json['data']) : null;
errorMsg = json['errorMsg']; errorMsg = json['errorMsg'] as String?;
}
//
int? _parseInt(dynamic value) {
if (value == null) return null;
if (value is int) return value;
if (value is String) {
try {
return int.parse(value);
} catch (e) {
return null;
}
}
return null;
} }
String? description; String? description;
int? errorCode; int? errorCode;

View File

@ -164,10 +164,10 @@ class Starchart {
this.starchartPeerPrivateKey}); this.starchartPeerPrivateKey});
Starchart.fromJson(Map<String, dynamic> json) { Starchart.fromJson(Map<String, dynamic> json) {
scdUrl = json['scdUrl']; scdUrl = json['scdUrl'] as String?;
starchartId = json['starchartId']; starchartId = json['starchartId'] as String?;
starchartPeerPublicKey = json['starchartPeerPublicKey']; starchartPeerPublicKey = json['starchartPeerPublicKey'] as String?;
starchartPeerPrivateKey = json['starchartPeerPrivateKey']; starchartPeerPrivateKey = json['starchartPeerPrivateKey'] as String?;
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {

View File

@ -72,7 +72,7 @@ class MineSetLogic extends BaseGetXController {
Future<void> getUserInfoRequest() async { Future<void> getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
Storage.setBool(saveIsVip, entity.data!.isVip! == 1); Storage.setBool(saveIsVip, entity.data!.isVip == 1);
state.amazonAlexaData.value = entity.data!.amazonAlexa ?? AmazonAlexa(); state.amazonAlexaData.value = entity.data!.amazonAlexa ?? AmazonAlexa();
state.googleHomeData.value = entity.data!.googleHome ?? GoogleHome(); state.googleHomeData.value = entity.data!.googleHome ?? GoogleHome();
} }

View File

@ -20,7 +20,7 @@ class ValueAddedServicesListLogic extends BaseGetXController {
Future<void> getUserInfoRequest() async { Future<void> getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
Storage.setBool(saveIsVip, entity.data!.isVip! == 1); Storage.setBool(saveIsVip, entity.data!.isVip == 1);
state.amazonAlexaData.value = entity.data!.amazonAlexa ?? AmazonAlexa(); state.amazonAlexaData.value = entity.data!.amazonAlexa ?? AmazonAlexa();
state.googleHomeData.value = entity.data!.googleHome ?? GoogleHome(); state.googleHomeData.value = entity.data!.googleHome ?? GoogleHome();
} }