我正在努力寻找如何在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
,如果以后尝试为任何类型设置类型注释,将几乎引发错误。该如何解决?
答案 0 :(得分:1)
由于data['errors']['email']
返回了List<dynamic>
,因此出现此错误。
您必须像这样将项目投射到String
上:
final List<String> emailErrors = data['errors']['email'].cast<String>()