Флаттер http-запрос от Rapid Api не загружается - PullRequest
0 голосов
/ 22 апреля 2020

Я связываю извлечение данных из API Rapid Api с использованием http-пакета Dart и отображение его с помощью Flutter, однако содержимое никогда не загружается и API не возвращает ошибку.

class APIService {
  // API key
  static const _api_key = <MYAPIKEY>;
  // Base API url
  static const String _baseUrl = "covid-19-data.p.rapidapi.com";
  // Base headers for Response url
  static const Map<String, String> _headers = {
    "content-type": "application/json",
    "x-rapidapi-host": "covid-19-data.p.rapidapi.com",
    "x-rapidapi-key": _api_key,
  };

  Future<CovidNumbers> fetchData(
      {@required String endpoint, @required Map<String, String> query}) async {
    Uri uri = Uri.https(_baseUrl, endpoint, query);

    final response = await http.get(uri, headers: _headers);
    if (response.statusCode == 200) {
      return CovidNumbers.fromJson(json.decode(response.body));
    } else {
      throw Exception('Failed to load Data');
    }
  }
}

Метод затем вызывается onInit

  Future<CovidNumbers> data;
  APIService apiService = APIService();

  @override
  void initState() {
    super.initState();
    data = apiService.fetchData(
        endpoint: "/country", query: {"format": "json", "name": "malta"});
  }

И, наконец, я отображаю его в FutureBuilder

FutureBuilder<CovidNumbers>(
          //future: futureCovidNumbers,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return Text(
                  "Confirmed Cases: ${snapshot.data.confirmed.toString()}");
            } else if (snapshot.hasError) {
              return Text("${snapshot.error}");
            }

            return CircularProgressIndicator();
          },
        ));

Приложение остается застрявшим в CircularProgressIndicator и не отображает ошибку.

1 Ответ

0 голосов
/ 22 апреля 2020

ваше будущее пусто, по этой причине всегда возвращается CircularProgressIndicator, поместите вашу переменную data в будущее и попробуйте снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...