发生异常。 _TypeError(类型'_InternalLinkedHashMap <String,dynamic>'不是类型'List <dynamic>'的子类型)

时间:2019-11-19 22:15:19

标签: flutter dart

我是新手,所以老实说,我不知道为什么收到此错误。

exact error

List < BaseResponse > pEShippingDetail = [];
  Future loadMessageList() async {
    http.Response response = await http.get('http://www.efwebservice.com/Public/api/ShipmentItems/GetShippingDetails?token=XE9QZEA5ZLRJ64FLO4210&projectid=1010408');
    //await Future.delayed(Duration(seconds: 3));

    String content = response.body;
    List collection = json.decode(content);
    List < BaseResponse > _messages = collection.map((json) => BaseResponse.fromJson(json)).toList();

    setState(() {
      pEShippingDetail = _messages;
    });
  }

  void initState() {
    loadMessageList();
    super.initState();

  }

2 个答案:

答案 0 :(得分:0)

该get请求返回的是JSON对象,而不是列表。 JSON对象被解码为Map<String, dynamic>。因此,例外是因为您试图将Map<String, dynamic>分配给List变量,但无法完成。

不过,看看上面的响应,也许您是要在响应中使用categories属性,而不是整个响应?

仔细查看响应,并确定您实际上对数据的哪些部分感兴趣。

答案 1 :(得分:0)

您的json.decode(content);产生了_InternalLinkedHashMap<String, dynamic>,但是您尝试将其分配给类型为List(默认类型)的dynamic

要解决此问题,请首先查看响应的数据格式是什么。然后使用所需的类型。您可以使用没有静态类型的final,但这不是最好的选择。 Map<String, dynamic>应该可以工作,但是如果不查看json响应就不能明确地说出它是正确的。