Flutter - Дайте индекс для ответа Dynami c http.post json - PullRequest
0 голосов
/ 09 мая 2020

У меня уже есть кнопка для получения API с функцией ++ увеличения индекса и установки нового параметра на каждый щелчок . Мой вопрос: как установить «как кеш» для ответа json в качестве индекса?

здесь мой http.post запрос =

  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]);

Как этого добиться? Является ли это возможным? Спасибо

1 Ответ

0 голосов
/ 09 мая 2020

Во-первых, вы не должны передавать index в качестве параметра вашего метода. responseJson переменная - это карта, вы должны преобразовать эту карту в нужный вам объект.

Предлагаю взглянуть на это .

...