flutter как обрабатывать ошибки проверки на стороне http-сервера
Я пытаюсь отобразить ошибки на стороне сервера в форме входа. я пытаюсь изменить состояние, когда данные доступны. но это не работает. может ли кто-нибудь помочь
Или есть какой-нибудь лучший способ сделать это. Future<dynamic> apiRequest(map) async {
String url = 'https://localhost/api/login';
var response = await http.post(Uri.encodeFull(url),
body: map, headers: {"Accept": "application/json"});
var res = json.decode(response.body);
return res;
}
void _submit() async {
if (this._formKey.currentState.validate()) {
_formKey.currentState.save(); // Save our form now.
var map = {
'email_id': '',
'password': '',
};
var hello = await apiRequest(map);
setState(() {
email_id_error = hello["errors"]["email_id"];
});
} else {
setState(() {
_autovalidate = true;
});
}
}
new Text(email_id_error),
Ответ от сервера
{status_code: 4003, errors: {password: [can't be blank], email_id: [can't be blank]}}
1 ответ:
Вы можете попробовать это
void _submit() async { if (this._formKey.currentState.validate()) { _formKey.currentState.save(); // Save our form now. var map = { 'email_id': '', 'password': '', }; var hello = await apiRequest(map); if(hello.statusCode ==4003){ setState(() { email_id_error = hello.responseBody["errors"]["email_id"]; }); } } else { setState(() { _autovalidate = true; }); } }