signInPhone method
Future<void>
signInPhone({
- required String phoneNumber,
- required dynamic verificationCompleted(),
- required dynamic verificationFail(),
- required dynamic codeSent(),
- int? seconds,
- int? forceResendingToken,
override
Initiates phone number sign-in process. Calls callbacks based on the verification process.
Implementation
@override
Future<void> signInPhone({
required String phoneNumber,
required Function(ExaAuthUser) verificationCompleted,
required Function(AuthFailure) verificationFail,
required Function(String?, int?) codeSent,
int? seconds,
int? forceResendingToken,
}) async {
try {
var response = false;
await firebaseAuth.verifyPhoneNumber(
timeout: Duration(seconds: seconds ?? 60),
forceResendingToken: forceResendingToken,
phoneNumber: phoneNumber,
verificationCompleted: (phoneAuthCredential) async {
if (ExaAuth.onlyCredential) {
verificationCompleted(
ExaAuthUser.withCredential(credential: phoneAuthCredential));
} else {
var userCredential =
await _signInWithCredential(phoneAuthCredential);
response = true;
verificationCompleted(
_resolveUser(firebaseUser: userCredential.user));
}
},
verificationFailed: (e) {
verificationFail(_resolveException(
exception: e,
stackTrace: null,
locale: 'signInPhone',
sigInType: SigInType.phone));
},
codeSent: (String verificationId, int? forceResendingToken) async {
if (!response) {
response = true;
codeSent.call(verificationId, forceResendingToken);
}
},
codeAutoRetrievalTimeout: (String verificationId) {
if (!response) {
response = true;
codeSent.call(verificationId, forceResendingToken);
}
},
);
} catch (exception, stackTrace) {
verificationFail(_resolveException(
exception: exception,
stackTrace: stackTrace,
locale: 'signInPhone',
sigInType: SigInType.phone));
}
}