Flutter登录报错:'(dynamic)=>Rol'与'transform'类型不兼容
问题排查与解决
错误根源
你遇到的类型转换错误,核心原因是User类的toJson()方法中直接传递了List<Rol>对象列表,而json.encode无法直接序列化自定义的Rol类实例,需要将每个Rol对象转换为可序列化的Map<String, dynamic>结构。
修复步骤
修正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() ?? [] };确认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
相关产品推荐
相关产品推荐

