Harnish, для отладки этой ошибки требуются дополнительные сведения.
- Вы работаете на сервере локально или общаетесь с удаленным сервером?
- Работаете ли выприложение на эмуляторе Android?
Возможное решение:
Если вы работаете на сервере локально и используете эмулятор Android, тогда конечная точка вашего сервера должна быть10.0.2.2:8000
вместо localhost:8000
, поскольку AVD использует 10.0.2.2
в качестве псевдонима для интерфейса обратной связи вашего хоста (т. Е.) localhost
Примечание по фьючерсам
Iвыше заметил, что код использует await, а затем в той же строке.Это может быть запутанным, чтобы быть понятным, await
используется для приостановки выполнения до завершения будущего, а then
- это функция обратного вызова, которая выполняется после завершения будущего.То же самое можно записать, как показано ниже
void myFunction() async {
var data = {};
var response = await http.post(URL, headers:headers, body:data);
if (response.statusCode == 200) {
print(reponse.body);
} else {
print('A network error occurred');
}
}
или не асинхронным / ожидающим методом
void myFunction() {
var data = {};
http.post(URL, headers:headers, body:data)
.then((response) => print(response.body))
.catchError((error) => print(error));
}
Для получения более подробной информации о фьючерсах в дротике, пожалуйста, прочитайте https://www.dartlang.org/tutorials/language/futures