"on HttpException catch (error)" 在 flutter 中不起作用

"on HttpException catch (error)" desn't work in flutter

我编写了这段代码来处理来自服务器 Firebase 的 flutter 错误:

这是主要功能:

    try {
  if (_authMode == AuthMode.Login) {
    print("log in");
    await Provider.of<Auth>(context, listen: false)
        .signIn(_authData['email'], _authData['password']);
  } else {
    await Provider.of<Auth>(context, listen: false)
        .signUp(_authData['email'], _authData['password']);
  }
} on HttpException catch (error) {
  print("Check error");
  if (error.toString().contains("EMAIL_EXISTS")) {
    _ServerError =
        "The email address is already in use by another account.";
  }
  if (error.toString().contains("TOO_MANY_ATTEMPTS_TRY_LATER")) {
    _ServerError =
        "We have blocked all requests from this device due to unusual activity.\n Try again later.";
  } else {
    _ServerError = "Something wrong. \n Try again later!";
  }
} catch (error) {
  print(error.toString() );
}

这是被调用的函数:

  Future<void> signIn(String? email, String? password) async {
const _url =
    "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=APICODE";

_authentication(_url, email, password);}

  Future<void> _authentication(
  String _url, String? email, String? password) async {
try {
  final _response = await http.post(Uri.parse(_url),
      body: json.encode({
        'email': email,
        'password': password,
        'returnSecureToken': true
      }));
  final _responseData = json.decode(_response.body);
  if (_responseData['error'] != null) {
    throw HttpException(_responseData['error']['message']);
  }
} catch (error) {
  throw error;
}}

但问题是当被调用的函数抛出 HttpException 错误时,我没有在主函数中得到它,因为 Catch 不起作用,因为我没有在面板中得到消息“检查错误” ?!

这是面板: 你能帮帮我吗?

问题是我忘记将 return 添加到调用的函数中:

    Future<void> signIn(String? email, String? password) async {
const _url =
    "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=APICODE";

return _authentication(_url, email, password);
}