#flutter #uri
Вопрос:
Я обновляю свой код до последних версий пакетов Flutter/Dart и вижу, что теперь http-запросы нужно выполнять, передавая a Uri
вместо a String
.
final String request =
'https://wft-geo-db.p.rapidapi.com/v1/geo/locations/$isoLocationDb/nearbyCities?minPopulation=150000amp;radius=30';
Конечно, я мог бы просто использовать
var response = await get(Uri.parse(request), headers: headers);
что работает, как и ожидалось, но я хотел создать Uri, чтобы новый код был
Map<String, dynamic> parameters = {'minPopulation': 150000, 'radius': 30};
Uri uri = Uri.https('wft-geo-db.p.rapidapi.com',
'/v1/geo/locations/$isoLocationDb/nearbyCities', parameters);
print('∞∞∞∞∞∞∞∞∞∞ GetCityDb 1st Uri is : $uri'); // No prints
var headers = {
'x-rapidapi-host': 'wft-geo-db.p.rapidapi.com',
'x-rapidapi-key': apiKey,
};
var response = await get(uri, headers:headers);
но затем Uri
объявление идет неправильно ( я не печатаю его), и метод возвращает an int
вместо a List<String>
(получил это из моей ошибки блока int is not a subtype of List<String>
.
Это приводит к тому, что изменение parameter
значений на String решает проблему.
Не следует предполагать, что вы принимаете числа, как это есть Map<String, dynamic>
? Не Uri
строжирует ли эти значения?
Комментарии:
1. «Не
Uri
строит эти значения?» Нет, это не так. ДокументацияUri
должна быть лучше , но документация дляUri
конструктора объясняет: «ПриqueryParameters
использовании запрос строится на основе предоставленной карты…. Значение на карте должно быть либо строкой, либоIterable
числом строк….»2. а ну понятно. Я этого не видел. Овации