You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter登录报错:'(dynamic)=>Rol'与'transform'类型不兼容

问题排查与解决

错误根源

你遇到的类型转换错误,核心原因是User类的toJson()方法中直接传递了List<Rol>对象列表,而json.encode无法直接序列化自定义的Rol类实例,需要将每个Rol对象转换为可序列化的Map<String, dynamic>结构。

修复步骤

  1. 修正User类的toJson()方法
    将roles字段的序列化逻辑改为遍历每个Rol实例,调用其toJson()方法转换为Map:

    Map<String, dynamic> toJson() => {
      "id": id,
      "email": email,
      "name": name,
      "lastname": lastname,
      "phone": phone,
      "image": image,
      "password": password,
      "session_token": sessionToken,
      // 修复此处:将每个Rol实例转为对应的Map
      'roles': roles?.map((rol) => rol.toJson()).toList() ?? []
    };
    
  2. 确认Rol类实现了正确的toJson()方法
    你的Rol类必须包含返回Map<String, dynamic>的toJson()方法,示例如下:

    class Rol {
      // 你的Rol类字段
      String? id;
      String? name;
      // ...其他字段
    
      // 构造函数、fromJson方法...
    
      Map<String, dynamic> toJson() => {
        "id": id,
        "name": name,
        // ...对应其他字段的序列化
      };
    }
    

补充说明

  • 你的User.fromJson()中对roles的反序列化逻辑是正确的,无需修改;
  • 后端返回的roles是数组结构,前端反序列化逻辑匹配,问题仅出在序列化环节。

内容的提问来源于stack exchange,提问作者abdel hakim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:24:52