首页 > 解决方案 > Flutter Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null

问题描述

所以我试图显示 1 个 API 响应,但是当我尝试我的方法时,它显示了这个错误

Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null.

我的 API 响应如下所示

"VR": "00",
    "VALUE": {
        "dt_name": "Caramel",
        "dt_num": "20455",
        "dt_pic": "---",
    },
    "STATS": "OK",
    "LOAD": "0s"
}

这是我只得到名字的方法

Future<List<KonFirm>> _reqKonfirm() async {
    var TP = await RTUPS(name);
    var jsonData = json.decode(TP);
    var jsonName = jsonData["VALUE"];
    List<KonFirm> konfirm = [];

    for (var u in jsonName) {
      KonFirm konFirm = KonFirm(
          u["dt_name"]);

      konrirm.add(konFirm);
    }
    return konfirm;
  }

这就是我所说的我得到的数据

FutureBuilder(
                    future: _reqKonfirm(),
                     builder: (BuildContext context,
                        AsyncSnapshot snapshot) {
                        nameController.text =
                        snapshot.data[index]
                           .dt_name;
  });

标签: flutterdart

解决方案


您的 jsonName 包含 Map 而不是列表,因此合乎逻辑的方法就是

KonFirm konFirm = KonFirm(
      jsonName["dt_name"]);
konfirm.add(konFirm);
return konfirm;

没有更多循环,但如果您将方法的泛型更改为Future<KonFirm>会更好,因为您的 json 源仅包含一个数据


推荐阅读