优化登录数据解析过程中,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});
LoginData.fromJson(dynamic json) {
accessToken = json['accessToken'];
userid = json['userid'];
expiresAt = json['expiresAt'];
expiresAtString = json['expiresAtString'];
mobile = json['mobile'];
headUrl = json['headUrl'];
email = json['email'];
nickname = json['nickname'];
haveSafeAnswer = json['haveSafeAnswer'];
uid = json['uid'];
isVip = json['isVip'];
accessToken = json['accessToken'] as String?;
userid = _parseInt(json['userid']);
expiresAt = _parseInt(json['expiresAt']);
expiresAtString = json['expiresAtString'] as String?;
mobile = json['mobile'] as String?;
headUrl = json['headUrl'] as String?;
email = json['email'] as String?;
nickname = json['nickname'] as String?;
haveSafeAnswer = json['haveSafeAnswer'] as bool?;
uid = _parseInt(json['uid']);
isVip = _parseInt(json['isVip']);
starchart = json['starchart'] != null
? Starchart.fromJson(json['starchart'])
: 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;
int? userid;
int? expiresAt;

View File

@ -8,10 +8,24 @@ class LoginEntity {
this.errorMsg,});
LoginEntity.fromJson(dynamic json) {
description = json['description'];
errorCode = json['errorCode'];
description = json['description'] as String?;
errorCode = _parseInt(json['errorCode']);
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;
int? errorCode;

View File

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

View File

@ -72,7 +72,7 @@ class MineSetLogic extends BaseGetXController {
Future<void> getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
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.googleHomeData.value = entity.data!.googleHome ?? GoogleHome();
}

View File

@ -20,7 +20,7 @@ class ValueAddedServicesListLogic extends BaseGetXController {
Future<void> getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
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.googleHomeData.value = entity.data!.googleHome ?? GoogleHome();
}