Я пытаюсь выполнить вход по номеру телефона, отправив sms-код на свое телефонное устройство с помощью firebase auth. Но ключевое слово await здесь, похоже, не работает. Зачем? Я предполагаю, что когда я назначаю await функции, Flutter печатает нулевое значение переменной verificationId
, а verificationId
получает свое значение в функции _sendCodeToPhoneNumber. Следовательно, это может означать, что функция _sendCodeToPhoneNumber
еще не завершена, но ее следующая строка кода (print(verificationId)
в данном случае) уже выполняется. Но если я ошибаюсь, то в чем проблема? и что еще более важно, научите меня, как решить проблему? Потому что мне нужно получить значение verificationId
и передать его следующему классу.
String verificationId;
Future<void> _sendCodeToPhoneNumber() async {
...
final PhoneCodeSent codeSent = (String verificationId, [int forceResendingToken]) async {
this.verificationId = verificationId; //this.verificationId here is not null because it has got a value
print('Code sent to ${_phoneNumberController.text} with $verificationId');
};
...
await FirebaseAuth.instance.verifyPhoneNumber(
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout,
phoneNumber: _phoneNumberController.text,
codeSent: codeSent,
timeout: const Duration(seconds: 120),
verificationCompleted: verificationCompleted,
verificationFailed: vericationFailed
);
}
...
FlatButton(onPressed: (){
await _sendCodeToPhoneNumber();
print(verificationId); // printed null despite having assigned `await` to the _sendCodeToPhoneNumber function
...
})