我已经有了一个按钮,用函数来获取API,++增加指数,并将新参数设置在 每次点击. 我的问题是,如何将json响应设置为索引的 "像缓存"?
这里我的http.post request =
List<dynamic> _myResponse = [];
Future<void> trytoFetch(myIndex, parameter) async {
var url =
"https://jsonplaceholder.typicode.com/posts/$parameter";
Map<String, String> headers = {
'Content-type': 'application/json',
'Accept': 'application/json',
};
final response = await http.post(url, headers: headers);
final responseJson = json.decode(response.body);
if (response.statusCode == 200) {
setState(() {
_myResponse[myIndex] = responseJson; // ITS DOESNT WORKS
});
} else {
setState(() {});
throw Exception('Failed to load internet');
}
}
我的目标是像
if (response.statusCode == 200) {
setState(() {
_myResponse[0] = responseJson; // return responseJson from parameter
// Then I click the button with new parameter value and increment index
_myResponse[1] = responseJson; // return responseJson from new parameter
// Then I click the button with another new parameter value and increment index
_myResponse[2] = responseJson; // return responseJson from new parameter again
});
} else {
setState(() {});
throw Exception('Failed to load internet');
}
最后,我可以简单地打印返回的json
print(_myResponse[0]);
print(_myResponse[1]);
print(_myResponse[2]);
如何实现这个目标,有可能吗?谅谅
首先,你不应该把index作为参数传递给你的方法。responseJson
变量是一个Map,你应该把这个Map转换为你需要的对象。
我建议你看看 这个.