1

我在 Flutter 中创建了一个自定义按钮小部件,名为BottomButton. 由于我觉得这个问题不需要自定义小部件的实现,所以我简单地省略了它。

    BottomButton(
        text: "Tap to Login",
        onPressed: () {
          errorMessage = LoginError.errorMessage;
          if (errorMessage != null) {
            SnackBar errorSnackBar = SnackBar(
                content: Text(
              LoginError.errorMessage,
              textAlign: TextAlign.center,
            ));
            setState() {
                errorMessage = null;
                LoginError.errorMessage = null;
            }
            Scaffold.of(context).showSnackBar(errorSnackBar);
          }
          loginWithEmailPassword();
        },
      )

在我的应用程序中,在我调用后端 APi 对用户进行身份验证后,如果在对用户进行身份验证时出错,我将其添加到LoginError.errorMessage. LoginError是一个飞镖类,errorMessage是该类的静态属性。

在上面的代码中,我正在做的是点击我的自定义按钮小部件以登录用户,如果有错误,我将导入我添加到的错误消息并将其LoginError.errorMessage显示在SnackBar.

但是,如果出现错误消息,我会将其重置LoginError.errorMessagenull,如果LoginError.errorMessagenull,我已经编写了代码,因此SnackBar不会显示。(SnackBar仅在LoginError.errorMessage不是null因为我正在if检查时才显示)。

当前实现在用户输入无效凭据时显示错误消息。但是,如果我在输入不正确的凭据并点击自定义按钮小部件一次后输入正确的凭据,则用户已登录,但Invalid Credentials错误也显示在快餐栏上。

我无法弄清楚为什么Snackbar在输入错误凭据后尝试使用有效凭据登录时显示不正确的凭据错误。

4

0 回答 0