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

Flutter Dio请求API报NoSuchMethodError '[]'空值调用异常

错误原因

你遇到的NoSuchMethodError: The method '[]' was called on null报错由两个问题导致,其中JSON解析错误是直接触发运行时崩溃的核心原因,布局约束问题会导致修复解析后依然无法正常渲染列表:

  • 核心解析错误:QuotesModel的fromJson方法层级写多了。你请求的接口返回的列表每一项就是直接包含text、author字段的平面对象,不存在外层包裹的quotes键。代码里执行json['quotes']时拿到的是null,再对null调用['text']/['author']就直接触发空指针调用错误。
  • 布局隐患:水平滚动的ListView直接放在SliverToBoxAdapter中时,没有指定垂直方向的固定高度,会触发Flutter的布局约束报错,列表无法正常渲染。
修复方案

1. 修正模型JSON解析逻辑

删除多余的['quotes']层级,直接从当前JSON对象取对应字段:

class QuotesModel {
QuotesModel(this.text, this.author);

final String text;
final String author;

 QuotesModel.fromJson(Map<String, dynamic> json)
  : text = json['text'] as String,
    author = json['author'] as String;
 }

2. 给水平列表添加高度约束

用固定高度的组件包裹水平ListView,解决垂直方向无边界的布局问题,高度值可以根据你的卡片设计自行调整:

case Status.success:
  return SizedBox(
    height: 120, // 可根据卡片样式调整高度
    child: ListView(
      scrollDirection: Axis.horizontal,
      children: [
        for (final quotesModel in state.results)
          QoutesCard(quotesModel: quotesModel)
      ],
    ),
  );

补充说明:你当前的DataSource层、Repository层逻辑没有功能性错误,空值判断逻辑也正常,不需要额外修改。修复上述两个问题后即可正常拉取接口数据,渲染出你预期的水平滚动励志语录列表。

内容的提问来源于stack exchange,提问作者Jarosław Gawlik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:24:25