处理 http 请求时出错导致抖动

Eri*_*oss 1 flutter flutter-dependencies flutter-layout

我试图处理登录时出现的错误,通过http 请求检查用户和密码是否正确,问题是,即使我处理了错误,它仍然进入欢迎屏幕,因为我的检查方法总是以true 因为我错误地处理了信息。我希望用户能够看到错误,但我的代码只显示异常。 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;
  }
Run Code Online (Sandbox Code Playgroud)

我真的只是想向用户展示他的错误是什么,而不是我自己(这意味着 throw 不起作用,因为它只是停止代码,而将其取出只会使 return true始终为 true。

Par*_*ary 6

您不应返回最后一行的值。仅当 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;
}
Run Code Online (Sandbox Code Playgroud)