Flutter - 给予动态http.post json响应的索引。

问题描述 投票:0回答:1

我已经有了一个按钮,用函数来获取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]);

如何实现这个目标,有可能吗?谅谅

flutter dart flutter-layout
1个回答
0
投票

首先,你不应该把index作为参数传递给你的方法。responseJson 变量是一个Map,你应该把这个Map转换为你需要的对象。

我建议你看看 这个.

© www.soinside.com 2019 - 2024. All rights reserved.