Как получить возврат POST API во Флаттере - PullRequest
0 голосов
/ 20 декабря 2018

Мне нужна твоя помощь.Я следовал руководству по POST API из приложения входа в систему, используя REST API и SQFLite , но я не могу получить никакого возврата после вызова запроса.Пожалуйста, исправьте мой код ниже.

login_presenter.dart

doLogin(String username, String password) {
api.callAPI(username, password).then((Post user) {
  _view.onLoginSuccess(user);
}).catchError((Exception error) => _view.onLoginError(error.toString()));}

rest_ds.dart

Future<User> login(String username, String password) {
return _netUtil.post(LOGIN_URL, body: {
  "username": username,
  "password": password
}).then((dynamic res) {
  print(res.toString());
  if(res["error"]) throw new Exception(res["error_msg"]);
  return new User.map(res["user"]);
});

}

второй урок, который я получу из ParsingJSON-Flutter , ошибка Object.noSuchMethod всегда указывает на _presenter.doLogin(_username, _password); что означает, что я не дошел до докладчика?Спасибо за помощь.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы должны проанализировать JSON из response.body, а не из тела напрямую.

Future<User> login(String username, String password) {
return _netUtil.post(LOGIN_URL, body: {
  "username": username,
  "password": password
}).then((response) {
      //check response status, if response status OK
      print("Response Status : $res");
      if(response.statusCode == 200){
        var data = json.decode(response.body);

        if(data.length>0){
          //Convert your JSON to Model here
        }
        else{
          //Get Your ERROR message's here
          var errorMessage = data["error_msg"];
        }
      }
});
...