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

Flutter报错:'List<dynamic>'非'Uint8List?'子类型 求解决

错误原因

当你通过toJson()将Uint8List类型的thumbImage序列化时,Dart会自动把它转换成List<dynamic>类型的JSON数组存储。而在fromJson()中直接将json[POST_THUMBIMAGE]赋值给Uint8List?类型的变量时,由于List<dynamic>和Uint8List是不同的类型,Dart无法自动完成类型转换,因此抛出类型不匹配的异常。

解决方法

需要手动将反序列化得到的List<dynamic>转换成Uint8List,可以使用Uint8List.fromList()方法,同时要处理字段为null的情况。修改PostModel.fromJson()中的thumbImage赋值逻辑即可:

PostModel.fromJson(Map<String, dynamic> json) {
  category = json[POST_CATEGORY] ?? "";
  title = json[POST_TITLE] ?? "";
  // 处理类型转换,同时兼容null
  final imageData = json[POST_THUMBIMAGE];
  thumbImage = imageData != null ? Uint8List.fromList(imageData.cast<int>()) : null;
}

补充说明

  • cast<int>()是为了确保List<dynamic>中的元素都是int类型(因为Uint8List是8位无符号整数的列表,元素范围0-255),避免类型转换时出现异常。
  • 如果你的序列化/反序列化是使用jsonEncode/jsonDecode完成的,这个转换逻辑完全适用,因为jsonDecode解析二进制数组时会返回List<dynamic>(内部元素是int)。

内容的提问来源于stack exchange,提问作者Kevin Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:15:34