Flutter 更新后 GraphQL 和 JSON 序列化停止正常工作

问题描述

我迁移到 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 (将#修改为@)