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   2  

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;
      });
    }
  }