verifyPhoneNumber method

Future<void> verifyPhoneNumber({
  1. required String phoneNumber,
  2. TextEditingController? otpController,
  3. bool signInOnAutoRetrival = true,
  4. void codeSent(
    1. String,
    2. int?
    )?,
  5. void verificationFailed(
    1. FirebaseAuthException
    )?,
  6. void verificationCompleted(
    1. PhoneAuthCredential
    )?,
  7. void codeAutoRetrievalTimeout(
    1. String
    )?,
  8. RecaptchaVerifier? verifier,
  9. int? forceResendingToken,
  10. Duration? timeout,
})

Starts a sign-in flow for a phone number.

You can optionally provide a RecaptchaVerifier instance to control the reCAPTCHA widget apperance and behaviour.

Once the reCAPTCHA verification has completed, called ConfirmationResult.confirm with the users SMS verification code to complete the authentication flow.

This method is only available on web based platforms.

Implementation

Future<void> verifyPhoneNumber({
  required String phoneNumber,
  TextEditingController? otpController,
  bool signInOnAutoRetrival = true,
  void Function(String, int?)? codeSent,
  void Function(FirebaseAuthException)? verificationFailed,
  void Function(PhoneAuthCredential)? verificationCompleted,
  void Function(String)? codeAutoRetrievalTimeout,
  RecaptchaVerifier? verifier,
  int? forceResendingToken,
  Duration? timeout,
}) async {
  await _auth.verifyPhoneNumber(
    phoneNumber: phoneNumber,
    timeout: timeout ?? Duration(seconds: 30),
    forceResendingToken: forceResendingToken,
    verificationCompleted: verificationCompleted ??
        (credential) async {
          if (otpController != null) {
            otpController.text = credential.smsCode!;
          }
          if (signInOnAutoRetrival) {
            await _auth.signInWithCredential(credential);
          }
          _otpSentController.sink.add(true);
          _errorStreamController.sink.add(null);
        },
    verificationFailed: verificationFailed ??
        (exception) {
          _otpSentController.sink.add(false);
          _errorStreamController.sink.add(exception.message);
        },
    codeSent: codeSent ??
        (verificationId, forceResendingToken) {
          this.verificationId = verificationId;
          this.forceResendingToken = forceResendingToken;
          _otpSentController.sink.add(true);
          _errorStreamController.sink.add(null);
        },
    codeAutoRetrievalTimeout: codeAutoRetrievalTimeout ?? (verificationId) {},
  );
}