【问题标题】:fetch data with flutter Receiver: null error使用颤振接收器获取数据:空错误
【发布时间】:2020-02-12 09:04:07
【问题描述】:

我尝试获取 api json ,这是链接https://api.myjson.com/bins/ut9kq 当我在循环之前打印输出时,它确实得到了数据,但在列表之后它给了我错误

“未处理的异常:NoSuchMethodError:在 null 上调用了 getter 'image'。 E/颤振(30730):接收器:空 E/flutter (30730): 尝试调用:image"

这是我的代码

    List lists;

    Future<List> getLists() async {
      lists = new List();
      await api.httpGet('bins/ut9kq').then((reponse) {
        var data = jsonDecode(reponse.body);
        print(data); // i get the json data => [{},{}..]
        data.forEach((l) {
          lists.add(ArticleModal().fromJson(l));
        });
        // print(lists[0].image);//Receiver: null
      });
      return lists;
    }

【问题讨论】:

  • 好吧,我一直在使用它,它就像魅力一样工作。我没有看到任何区别(而不是调用模型并为其设置名称),是否存在性能问题?跨度>

标签: json flutter dart fetch flutter-layout


【解决方案1】:

您正在使用这两种方法进行未来处理,.then 回调和异步和等待。尝试以下操作,您可以将这些包裹在 try/catch 块中以进行错误处理。

Future<List<ArticleModal>> getLists() async {
  lists = new List();

  var response = await http.get('bins/ut9kq');

  // a switch may be used for a wider range of codes
  if (response.statusCode == 200) {
    var decodedResponse = json.decode(response.body);
    print(decodedResponse);
    //if response is a collection
    var listAricleModal = (decodedResponse as List).map((collectionElement) => ArticleModal.fromJson(collectionElement)).toList();
    return listAricleModal;
  }
  //Your future is an empty collection
  return [];
}

为了正确回答您的问题,image 在 null 上被调用是非常明显的消息。 在某些时候,您有一个 image 字段,该对象未创建。可能是列表中的对象,所以可能会发生两件事:

  • 列表为空,因此没有可调用图像的对象。
  • fromJson 调用时出现问题。

无论哪种方式,使用调试器并在每个方法的第一行设置断点以清楚地了解正在发生的事情。 如果 map 函数难以调试,请使用普通的 for 循环,直到您知道错误在哪里。

观看来自 Google 的这一系列视频。 https://youtu.be/vl_AaCgudcY

还有官方文档:https://dart.dev/codelabs/async-await

【讨论】:

  • 谢谢你的回答我发现了这个问题,这对我来说太愚蠢了..我忘记了 articlemodel 类中的返回.. + 我仍然不知道如何使用调试器,可以请给我一些不错的教程
  • 查看官方文档:flutter.dev/docs/testing/debugging
猜你喜欢
  • 2021-01-20
  • 2021-03-31
  • 2021-04-04
  • 2021-03-04
  • 2021-12-16
  • 1970-01-01
  • 2021-06-05
  • 2021-05-18
  • 2021-12-22
相关资源
最近更新 更多