【问题标题】:Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<String>'未处理的异常:类型“List<dynamic>”不是“List<String>”类型的子类型
【发布时间】:2020-11-08 14:55:40
【问题描述】:

我正在努力了解如何在 Flutter 中解决这些类型错误。

我正在向使用以下 JSON 响应的服务器发出 HTTP 请求:

{
  "message": "The given data was invalid.",
  "errors": {
    "email": ["Email is required"]
  }
}

我正在从响应中分配数据,如下所示:

Future login(String email, String password) async {
    ...
    Map<String, dynamic> data = json.decode(response.body);

    final List<String> emailErrors = data['errors']['email'];
    final List<String> passwordErrors = data['errors']['password'];
}

一旦我尝试这样做,我就会收到以下错误:

未处理的异常:“List”类型不是“List”类型的子类型

似乎使用 dynamic 类型,如果您之后尝试为任何类型设置类型注释,它几乎会抛出错误。怎么解决?

【问题讨论】:

    标签: json flutter flutter-http


    【解决方案1】:

    您收到此错误是因为data['errors']['email']返回List&lt;dynamic&gt;

    您必须像这样将项目投射到String

    final List&lt;String&gt; emailErrors = data['errors']['email'].cast&lt;String&gt;()

    【讨论】:

    • 每个元素,甚至嵌套的元素都会被推断为动态类型,因为这是我在地图中注释的内容?
    • 没错,所有元素
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 2019-09-26
    • 2021-05-21
    • 1970-01-01
    • 2021-10-11
    • 2021-01-16
    • 2021-01-28
    相关资源
    最近更新 更多