Я создал класс util для аутентификации пользователя по номеру телефона. Перед использованием убедитесь, что вы настроили Firebase в Android и Ios, поскольку firebase объявляет здесь , и вы включили аутентификацию по номеру телефона с панели проекта Firebase. проверьте утилитарный класс ниже:
import 'dart:async';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/services.dart';
import 'package:flutter_firebase/network/networ_util.dart';
class FirebasePhoneUtil {
static final FirebasePhoneUtil _instance = new FirebasePhoneUtil.internal();
FirebasePhoneUtil.internal();
factory FirebasePhoneUtil() {
return _instance;
}
FirebaseAuthListener _view;
final FirebaseAuth _auth = FirebaseAuth.instance;
var api = new NetworkUtil();
String verificationId;
setScreenListener(FirebaseAuthListener view) {
_view = view;
}
// FirebasePhoneUtil(this._view);
Future<void> verifyPhoneNumber(String phoneNumber, String code) async {
final PhoneVerificationCompleted verificationCompleted =
(FirebaseUser user) {};
final PhoneVerificationFailed verificationFailed =
(AuthException authException) {};
final PhoneCodeSent codeSent =
(String verificationId, [int forceResendingToken]) async {
this.verificationId = verificationId;
_view.verificationCodeSent(forceResendingToken);
};
final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
(String verificationId) {};
await _auth.verifyPhoneNumber(
phoneNumber: code + phoneNumber,
timeout: const Duration(seconds: 5),
verificationCompleted: verificationCompleted,
verificationFailed: verificationFailed,
codeSent: codeSent,
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);
}
verifyOtp(String smsCode) async {
final FirebaseUser user = await _auth
.signInWithPhoneNumber(
verificationId: verificationId,
smsCode: smsCode,
)
.then((FirebaseUser res) {
identical("", "");
})
.catchError(
(PlatformException error) => onTokenError(error.toString()));
}
}
onTokenError(String string) {
print("ssss");
}
abstract class FirebaseAuthListener {
verificationCodeSent(int forceResendingToken);
}