Firebase 如何检查用户是否验证邮件,然后让其登录?

Firebase 如何检查用户是否验证邮件,然后让其登录?,firebase,flutter,authentication,firebase-authentication,flutter-web,Firebase,Flutter,Authentication,Firebase Authentication,Flutter Web,我知道这个问题问了很多次,但在花了几个小时试图理解之后,我仍然不知道如何去做 所以我知道我有两种未来的方法 西格因酒店 Future<String> signIN(String email, String password) async { try { (await FirebaseAuth.instance.signInWithEmailAndPassword( email: email.trim(),

我知道这个问题问了很多次,但在花了几个小时试图理解之后,我仍然不知道如何去做

所以我知道我有两种未来的方法

西格因酒店

 Future<String> signIN(String email, String password) async {
    
      try {
        (await FirebaseAuth.instance.signInWithEmailAndPassword(
          email: email.trim(),
          password: password,
        ))
            .user;
      } on FirebaseAuthException catch (e) {
        switch (e.code) {
          case 'invalid-email':
            {
              return 'Email is not valid';
            }
          case 'user-disabled':
            {
              return 'Account is not active';
            }
          case 'user-not-found':
            {
              return 'No user found';
            }
          case 'wrong-password':
            {
              return 'wrong password';
            }
          default:
            {
              return 'Unexpected error!';
            }
        }
      }
      return null;

    
  }
还有“登录”按钮

   onPressed: () async {
              if (_formKey.currentState.validate()) {
                
                String authError = await _auth.signIN(email, password);
                if (authError != null) {
                  setState(() => error = authError);
                  print("olaaa");
                  print(error);
                }
                setState(() => loading = false);
              }
            }
从负责自动登录用户的小部件树中删除流(authStateChanges)

然后,手动推送新屏幕进行电子邮件注册。完成后,让用户进入主屏幕

在以后再次打开应用程序时,您可以检查用户是否已登录以及电子邮件是否已验证。如果是,则转到主屏幕,如果不是,则转到登录屏幕


这里的问题是,无论电子邮件是否经过验证,流在用户登录时都会自动更改。所以,移除它并继续

谢谢你的回答。但实际上,我不想让用户进入一个新页面来验证他的邮件。我希望该用户可以访问他的电子邮件帐户,验证我已发送的邮件,然后返回我的应用程序并登录。当然。用同样的方法也很容易做到。只需按下“完成”按钮触发验证,显示一个快餐店,如“请验证您的电子邮件”,您就完成了!!好的,现在我想我明白了,但我如何询问电子邮件是否经过验证?您可以展示代码示例或告诉我如何在我的代码中进行验证吗?当然可以。因此,可以通过在用户类上调用isEmailVerified来实现。这样做的方法是可以看到的。
      onPressed: () async {
            if (_formKey.currentState.validate()) {
              
              String authError = await _auth.signUp(email, password);
              if (authError != null) {
                 setState(() => jawoll = true);
                setState(() => error = authError);
               
              }else{
                 setState(() => loading = true);
                 setState(() => jawoll = false);
                setState(() => error = "Email send to $email");
             
              }
            }
          }
   onPressed: () async {
              if (_formKey.currentState.validate()) {
                
                String authError = await _auth.signIN(email, password);
                if (authError != null) {
                  setState(() => error = authError);
                  print("olaaa");
                  print(error);
                }
                setState(() => loading = false);
              }
            }