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

Flutter:无法通过端口向其他Isolate发送序列化Freezed对象

问题原因解析

这个报错的核心问题出在**EqualUnmodifiableListView<bool>类型的对象无法跨Isolate传递**:

  • Dart的Isolate之间传递数据时,要求对象必须是支持结构化克隆的核心类型(比如普通List/Map、字符串、数字,或是实现了可序列化协议的类),而EqualUnmodifiableListView是Freezed默认生成的不可修改列表包装类,属于非核心的自定义类型,不在可传递范围内。
  • 你把Freezed类序列化为Map时,这个包装后的List并没有被自动转换成普通List<bool>,而是保留了原有的EqualUnmodifiableListView类型,导致SendPort.send时触发类型校验异常。
  • 移除该List后,Map里不再包含不可序列化的包装类型,自然就能正常跨Isolate传递了。

临时解决思路

转Map时手动把包装列表转成普通List:

final serializedMap = yourFreezedInstance.toJson().map((key, value) {
  if (key == '目标列表字段名' && value is EqualUnmodifiableListView) {
    return MapEntry(key, value.toList());
  }
  return MapEntry(key, value);
});

内容的提问来源于stack exchange,提问作者Gazihan Alankus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:16