【问题标题】:Exception has occurred. _TypeError (type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>')发生异常。 _TypeError(类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'List<dynamic>' 的子类型)
【发布时间】:2019-11-19 22:15:19
【问题描述】:

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

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();

  }

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    该 get 请求返回的是 JSON 对象,而不是列表。 JSON 对象被解码为Map&lt;String, dynamic&gt;。所以例外是因为您试图将 Map&lt;String, dynamic&gt; 分配给 List 变量,这是无法完成的。

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

    仔细查看响应,并确定您真正感兴趣的数据部分。

    【讨论】:

      【解决方案2】:

      您的json.decode(content); 生成了_InternalLinkedHashMap&lt;String, dynamic&gt;,但您尝试将其分配给dynamic(默认类型)类型的List

      要解决这个问题,首先看看响应的数据格式是什么。然后使用所需的类型。您可以使用不带静态类型的final,但这不是最好的选择。 Map&lt;String, dynamic&gt; 应该可以工作,但不能在不查看 json 响应的情况下明确表示它是正确的。

      【讨论】:

      • 你能给我举个例子吗,因为我还是卡住了。
      • Iterable collection = json.decode(content);代替List collection = json.decode(content);
      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 2021-01-02
      • 2022-07-22
      • 2020-11-25
      • 1970-01-01
      • 2020-07-03
      • 2021-01-30
      • 2019-04-03
      相关资源
      最近更新 更多