错误处理http请求会导致抖动

问题描述 投票:0回答:1

我正在尝试处理登录时通过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。

flutter flutter-layout flutter-dependencies
1个回答
0
投票

您不应在最后一行返回该值。仅当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;
}
© www.soinside.com 2019 - 2024. All rights reserved.