You need to enable JavaScript to run this app. Flutter渲染评论列表时出现'+方法被空对象调用'错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter渲染评论列表时出现'+方法被空对象调用'错误如何解决

问题根因

你遇到的空指针报错核心有两个问题:

  1. CommentModel解析逻辑和接口返回字段不匹配
    你在CommentModel.fromJson方法中,判断是否存在用户信息的键是staff,但你提供的JSON示例里用户信息对应的键是user,所以解析时永远不会走到用户信息赋值的分支,_user始终是默认初始化的空UserModel对象,内部的name、surname字段均为null。
  2. 字符串拼接未做空值处理
    第52行的代码直接对name和surname做拼接操作,两个字段只要有一个为null,就会触发「方法'+'被调用在null对象上」的报错。

修复方案

第一步:修复评论模型的解析逻辑

把CommentModel.fromJson方法中判断用户信息的键从staff改为user:

factory CommentModel.fromJson(Map<String, dynamic> json) {
  //* initialize comment creator
  var _user = new UserModel();
  // 把staff改成user,匹配接口返回的字段名
  if (json != null && json.containsKey("user")) {
    _user = UserModel.fromJson(json['user']);
  }

  return CommentModel(
      id: int.parse(json["id"].toString()) ?? 0,
      userId: json["user_id"] ?? "",
      body: json["body"] ?? "",
      type: json["type"] ?? "",
      createdAt: json["created_at"] ?? "",
      projectId: json["project_id"] ?? "",
      user: _user);
}

第二步:优化用户模型的空值兼容

给UserModel.fromJson的字段取值加默认空字符串兜底,避免接口返回空时赋值为null:

factory UserModel.fromJson(Map<String, dynamic> json) {
  return UserModel(
    id: json['id'] ?? 0,
    name: json["name"] ?? '',
    surname: json["surname"] ?? '',
    picture: json["picture"] ?? '',
    email: json["email"] ?? '',
    medical: json["medical"] ?? '',
    contract: json["contract"] ?? '',
  );
}

第三步:优化字符串拼接的空安全处理

把第52行的拼接代码改成插值写法,就算极端情况出现空值也不会报错:

// 替换原来的 + 拼接写法
userName('${widget.comment.user.name ?? ''} ${widget.comment.user.surname ?? ''}'),

可选优化建议

如果你的项目已经开启空安全,建议给所有模型字段加上可空标记(?)或者required修饰,避免隐式空值带来的潜在问题。

内容的提问来源于stack exchange,提问作者Lucky Shabalala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:09:00