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

Flutter报错:'(dynamic) => Null'非'(String, dynamic)'子类型及null调用vendorDocList

报错原因

两个报错分别对应不同的代码问题:

  • 第一个错误Unhandled Exception: type '(dynamic) => Null' is not a subtype of type '(String, dynamic) => void' of 'f':是getVendorsDoc.fromJson方法中直接遍历json['data']导致的。如果后端返回的data字段为null、不是数组类型,或者data是Map类型,Map的forEach需要传入接收两个参数(key、value)的回调,你当前传入的只有一个参数的回调就会触发类型不匹配异常。
  • 第二个错误The getter 'vendorDocList' was called on null:有三个触发场景:1. 接口请求失败没有捕获异常,导致你拿到的getVendorsDoc实例为null,直接调用属性就会报错;2. getVendorsDoc.toJson方法中注释了vendorDocList的非空判断,当vendorDocList为null时调用.map方法触发报错;3. VendorDocList.toJson方法没有返回值,序列化异常会导致实例生成失败。
修复方案

按以下步骤修改代码即可:

  1. 修正getVendorsDoc.fromJson方法,增加字段类型、非空判断:
getVendorsDoc.fromJson(Map<String, dynamic> json) {
  status = json['status'];
  msg = json['message'];
  vendorDocList = [];
  // 先校验data字段的有效性再遍历
  if (json['data'] != null && json['data'] is List) {
    json['data'].forEach((v) {
      vendorDocList.add(VendorDocList.fromJson(v));
    });
  }
}
  1. 修正getVendorsDoc.toJson方法,恢复非空校验:
Map<String, dynamic> toJson() {
  final Map<String, dynamic> data = <String, dynamic>{};
  data['status'] = status;
  data['message'] = msg;
  // 保留非空判断,避免null调用map方法
  if (vendorDocList != null) {
    data['data'] = vendorDocList?.map((v) => v.toJson())?.toList();
  }
  return data;
}
  1. 修正VendorDocList.toJson方法,补充返回值:
Map<String, dynamic> toJson() {
  final Map<String, dynamic> data = <String, dynamic>{};
  data['logo'] = logo;
  return data;
}
  1. 接口调用处补充异常捕获,调用属性前先校验实例非空:
try {
  getVendorsDoc res = await VendorsDocument().getVendorDocList("替换为实际传参的lead_id");
  if (res != null) {
    // 再操作res.vendorDocList
  }
} catch(e) {
  print("请求异常:$e");
}
  1. 修正请求头的笔误:你当前authorizationHeader的取值多了一个多余的闭合大括号,把'Bearer $accessToken}'修改为'Bearer $accessToken'。
  2. 如果你的项目开启了空安全,需要给所有可能为空的属性加上可空标记?:
class getVendorsDoc {
  bool? status;
  String? msg;
  List<VendorDocList>? vendorDocList;
  // 其余代码不变
}

class VendorDocList {
  String? logo;
  // 其余代码不变
}

内容的提问来源于stack exchange,提问作者Abhishek Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:48:00