Home > Enterprise >  How to send a verification email on registerUsingEmailPassword() in flutter
How to send a verification email on registerUsingEmailPassword() in flutter

Time:04-27

I wan't when a user clicks sign up button an email verification is sent. So far with my code on signup an email verification is sent but user can't navigate to the next page (CircularProgressIndicator keeps on loading)

Here is my code

   onPressed: () async {
                  if (_regFormKey.currentState!.validate()) {
                     setState(() {
                    _isProcessing = true;
                  });

                    User? user = await FireAuth.registerUsingEmailPassword(
                      name: nameController,
                      email: _emailController.text,
                      password: _passwordController.text,
                    );        
                    if (user != null) {
                      bool EmailSent = user.sendEmailVerification() as bool;

                   //I think something is wrong here
                    if (EmailSent) {
                       Navigator.of(context).pushAndRemoveUntil(
                        MaterialPageRoute(
                          builder: (context) => ProfilePage(user: user),
                        ),
                        ModalRoute.withName('/'),
                      );  }

                    }  else{
                        ScaffoldMessenger.of(context)
                        .showSnackBar(SnackBar(content: Text(' Account exists or Network problems'),
                         backgroundColor: Colors.red,
                        ));}

                     setState(() {
                      _isProcessing = false;
                    });
                  
                }}

CodePudding user response:

sendEmailVerification() returns a Future<void> so EmailSent is not going to get set. You should await the verification call in a try...catch to handle the response.

More like this:

if (user != null) {
  try {
    await user.sendEmailVerification();
    /// sent successfully
    // TODO: put your navigation here
  } catch (e) {
    /// error sending verification
    // TODO: show snackbar
    // TODO: set _isProcessing to false
  }
}
  • Related