我正在尝试处理登录时通过HTTP请求检查用户名和密码是否正确的错误,问题是,即使我处理了该错误,它仍然会进入欢迎屏幕,因为我的检查方法始终会结束确实是因为我对信息的处理不正确。我希望用户能够看到该错误,但是我的代码仅向我显示异常。https://dart.dev/guides/libraries/futures-error-handling我看过这里,但由于我的具体情况,我没有找到答案。
prefix0.Error err = prefix0.Error();
Future<bool> check(User user) async {
final userResponse = await ApiClient.signIn(user).catchError((error) {
//TODO: handle errors
err.message = jsonDecode(error.toString())["message"];
throw("some arbitrary error");
});
// TODO: Guardar el token en sharedpreferences y verificar si se logro
return true;
}
我真的只是想向用户显示他的错误是什么,而不是我自己(这意味着throw不会起作用,因为它只会停止代码,而将其取出则只会使return true始终为true。
您不应在最后一行返回该值。仅当Future以一个值完成时,才应返回true,即在.then()回调中返回tru,如下所示:
Future<bool> check(User user) async {
final userResponse = await ApiClient.signIn(user)
.then((value){
// TODO: handle value
return true;
})
.catchError((error) {
//TODO: handle errors
err.message = jsonDecode(error.toString())["message"];
throw("some arbitrary error");
});
return false;
}