Итак, я пытаюсь вызвать REST API для входа в систему здесь.Это в моем api_services.dart, где я вызываю все API для приложения.
api_services.dart
Future<User> loginUser(String email, String password)
async {
final response = await http.post(serverOauthUrl+'/token',
headers: {
HttpHeaders.AUTHORIZATION: "xxxx"
},
body: {
"email":"$email",
"password":"$password",
}
);
print(response.statusCode);
final responseJson = json.decode(response.body);
return new User.fromJson(responseJson);
}
И есть два способа, которыми я могу вызвать этот метод loginUser()
в моих файлах пользовательского интерфейса и получить ответ.Один использует метод then (), а другой использует FutureBuilder.Однако ни в одном из методов я не могу получить код состояния.Мой пример использования: когда код состояния> 400, я создам виджет с сообщением об ошибке.
login_screen.dart
then () код метода:
_callLoginAPI(String email, String password){
loginUser(userName, password, "password").then((response) {
response.data.token;
// want my status code here as well along with response data
}
else
{
//todo show something on error
}
}, onError: (error) {
debugPrint(error.toString());
});
}
Или используя FutureBuilder:
return new FutureBuilder<User>(
future: loginUser(email, password),
builder: (context, snapshot) {
if (snapshot.hasData) {
print(snapshot.data.token);
} else if (snapshot.hasError) {
print(snapshot.error);
return new Text("${snapshot.error}");
}
return new CircularProgressIndicator();
},
);
Я хочу сделать что-то вроде этого
if(response.statusCode > 400)
return new Text("Error"):</code>