未处理的异常:类型'List <dynamic>'不是类型'List <String>'

时间:2020-11-08 14:55:40

标签: json flutter flutter-http

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

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

{
  "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'];
}

尝试执行此操作后,会出现以下错误:

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

好像使用类型dynamic,如果以后尝试为任何类型设置类型注释,将几乎引发错误。该如何解决?

1 个答案:

答案 0 :(得分:1)

由于data['errors']['email']返回了List<dynamic>,因此出现此错误。

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

final List<String> emailErrors = data['errors']['email'].cast<String>()