问题描述
我迁移到 Flutter 2 w/不健全的 null 安全并更新了我的 Flutter 项目中的库。之后 GraphQL 请求停止正常工作。这是一个例子。
根据服务器和应用程序日志,这是我得到的服务器响应:
responseString: {
"data": {
"user": {
"id": 409,"info": {
"email": "yuri.goncharenko@diversido.io","firstName": "Yuri","lastName": "Goncharenko","avatar": "https://lh3.googleusercontent.com/a-/AOh14Gjv2BpAeTxGyhC9cupGeDFAjJb14taGAV1dznxZ=s96-c","phone": "+79118248658"
},"roles": [
{
"id": 186,"role": "client","myfitnessPalId": null
}
],"chatJwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTSzcyNGE0ZDM3YjEzN2FmNzI4NzkzOTVkYmFhMTlmMTEzLTE2MjU1NjY1ODIiLCJncmFudHMiOnsiaWRlbnRpdHkiOiJ1c2VyLTQwOSIsImNoYXQiOnsic2VydmljZV9zaWQiOiJJU2I2NGY2YzE4ZGQ4MjQ0ODE4NjlmZmIwNjlmZWVjZWYwIn19LCJpYXQiOjE2MjU1NjY1OdisImV4cCI6MTYyNTU3MDE4MiwiaXNzIjoiU0s3MjRhNGQzN2IxMzdhZjcyODc5Mzk1ZGJhYTE5ZjExMyIsInN1YiI6IkFDOWNmNzA5YTgzMDliNDNhODE3MjAzYjI1ZjViNWU4NjEifQ.lcnUSIWEvk7IwmWO32mtUKwOk7lZIsl8VSUwO5ZIjkg"
}
}
},statusCode: 200
这里是解析对象响应的代码:
final role = result.data?['user']['roles'].first?['role'];
User user;
if (role == 'coach') {
final response = GetUserInfoResponse<CoachRole>.fromJson(
result.data!['user'] as Map<String,dynamic>,);
user = Coach(
id: response.id!,firstName: response.info!.firstName!,lastName: response.info!.lastName!,email: response.info!.email!,phoneNumber: response.info!.phone!,imageUrl: response.info!.avatar!,maxActiveClients: response.roles!.first!.maxActiveClients,inviteCode: response.roles!.first!.inviteCode,chatJwt: result.data!['user']['chatJwt'] as String);
} else if (role == 'client') {
final response = GetUserInfoResponse<ClientRole>.fromJson(
result.data!['user'] as Map<String,);
user = Client(
id: response.id!,myfitnessPalId: response.roles!.first!.myfitnessPalId,chatJwt: result.data!['user']['chatJwt'] as String);
} else {
throw ArgumentError('Unexpected role value: ${result.data}');
}
return FailureOrResult.success(user);
但是获取角色数据失败,这部分代码中result.data等于:
{user: {id: 409,info: null,roles: [null],chatJwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTSzcyNGE0ZDM3YjEzN2FmNzI4NzkzOTVkYmFhMTlmMTEzLTE2MjU1NjY1ODIiLCJncmFudHMiOnsiaWRlbnRpdHkiOiJ1c2VyLTQwOSIsImNoYXQiOnsic2VydmljZV9zaWQiOiJJU2I2NGY2YzE4ZGQ4MjQ0ODE4NjlmZmIwNjlmZWVjZWYwIn19LCJpYXQiOjE2MjU1NjY1OdisImV4cCI6MTYyNTU3MDE4MiwiaXNzIjoiU0s3MjRhNGQzN2IxMzdhZjcyODc5Mzk1ZGJhYTE5ZjExMyIsInN1YiI6IkFDOWNmNzA5YTgzMDliNDNhODE3MjAzYjI1ZjViNWU4NjEifQ.lcnUSIWEvk7IwmWO32mtUKwOk7lZIsl8VSUwO5ZIjkg}}
这是怎么发生的?在获得服务器响应和将其提供给我之间会发生什么?我是否遗漏了 Flutter 的新 GraphQL/JSON 库中的某些内容或进行了任何更改?
相同的代码和查询在 graphql: ^3.1.0 和 json_annotation: ^3.1.0 上运行良好,现在我使用 graphql: ^5.0.0 和 json_annotation: ^4.0.1,Flutter 2.2.3
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)