你好,尝试在登录期间发出posthttp请求.如何访问包含字符串值的映射中的值


List userData = [];
Future<APIResponse<bool>> loginUser(LoginUser item) {
var url = '$API/login';
print('url is: $url');
return http
.post(url, headers: headers, body: json.encode(item.toJson()))
.then((data) {
if (data.statusCode == 201) {
print("data contains: ${data.body}");
userData.add(data.body);
print(userData[0]["id"]);
return APIResponse<bool>(data: true);
}
if (data != null) {}
return APIResponse<bool>(
error: true, errorMessage: 'Eustero An error occured');
}).catchError((e) {
print('error is: $e');
APIResponse<bool>(error: true, errorMessage: 'MWai An error occured');
});

}

这是

data.body

''数据包含:{"id":29,"令牌":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjksImV4cCI6MTYxNjQ0MjE1M30.bdMVxI_1QEZDx9psCPloheeDzYRgKpirGvDoGyuEqqc";}''

当我尝试获取id时,得到的错误是:类型"String"不是"index"的类型"int"的子类型。

您得到的是单个对象作为响应,但您试图访问对象列表中的值。

要访问值,请尝试:

print(data["id"]); 

正如我所看到的,映射中的Id类型为int。您可以打印出对象的String表示,因此在此处强制转换toString()

print(userData[0]["id"].toString());

最新更新