Хорошо, я схожу с ума здесь, в моем приложении флаттера, я использую эту функцию для выполнения почтовых запросов:
Future<Map> postRequest(String serviceName, Map<String, dynamic> data) async {
var responseBody = json.decode('{"data": "", "status": "NOK"}');
try {
http.Response response = await http.post(
_urlBase + '$_serverApi$serviceName',
body: jsonEncode(data),
);
if (response.statusCode == 200) {
responseBody = jsonDecode(response.body);
//
// If we receive a new token, let's save it
//
if (responseBody["status"] == "TOKEN") {
await _setMobileToken(responseBody["data"]);
// TODO: rerun the Post request
}
}
} catch (e) {
// An error was received
throw new Exception("POST ERROR");
}
return responseBody;
}
Проблемы:
- Я получаю ClientException (не каждый раз)
В другом классе я сохранил результат этой функции в переменной, он должен возвращать Future<Map<dynamic, dynamic>>
, когда я печатал его, он показывает:
I/flutter ( 9001): Instance of 'Future<Map<dynamic, dynamic>>'
Но когда я запускаю тот же почтовый запрос напрямую (без использования функции), он работает и показывает сообщение, которое я ждал.
примечание: в обоих случаях (функция или нет) на стороне сервера это было одно и то же.
это функция, в которой я использовал почтовый запрос:
void _confirm() {
if (_formKey.currentState.saveAndValidate()) {
print(_formKey.currentState.value);
var v = auth.postRequest("se_connecter", _formKey.currentState.value);
print(v);
} else {
print(_formKey.currentState.value);
print("validation failed");
}
}