auth.dart
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
// Sign in with Phone Number Future<bool>
Future signInWithPhone(String phone, BuildContext context) async {
final PhoneVerificationCompleted verificationCompleted = (AuthCredential credential) async {
..
};
final PhoneVerificationFailed verificationFailed = (AuthException exception) {
// This is the return value which i want to access outside of this callback
return exception.message;
};
final PhoneCodeSent codeSent = (String verificationId, [int forceResendingToken]) {
...
};
final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout = (String verificationId) {
Navigator.of(context).pop();
...
};
await _auth.verifyPhoneNumber(
phoneNumber: phone,
timeout: Duration(seconds: 10),
verificationCompleted: verificationCompleted,
verificationFailed: verificationFailed,
codeSent: codeSent,
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout
);
// Trying to access the callback value
print(verificationFailed);
}
}
login.dart
class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
@override
Widget build(BuildContext context) {
return Container(
// here i am calling the phonesign in method
await _auth.signInWithPhone(phoneNumber, context);
// and here i want to show the message
);
}
}
В чем проблема?
Проблема в том, что я хочу получить доступ к значению любого обратного вызова verifyPhoneNumber , например, verifyFailed , который возвращает сообщение об исключении, и я хочу получить к нему доступ снаружи, поэтому что я могу использовать это в других виджетах.
Что я пробовал до сих пор?
1) Я попытался распечатать его, и он возвращает Закрытие AuthException: () => Строка Я не знаю, как получить доступ к значению.
2) Я пытался использовать setState , но мой класс не находится внутри statefulWidget Я не могу присвоить это значение переменной
* Зачем мне это нужно? *
Смотри, у меня есть две страницы, одна называется login.dart
, а вторая называется auth.dart
. На моей странице авторизации я в основном размещаю классы и код, относящиеся к бэкэнду (чтобы правильно организовать код ) и на странице входа в систему у меня есть виджет с состоянием, состоящий из текстового поля телефона, и при отправке я вызываю метод signInWithPhone . Все работает, но если появляется какая-либо ошибка, например, неправильный телефон пользователя затем запускается обратный вызов verifyFailed , и поэтому я хочу получить доступ к возвращаемому значению снаружи (bcz мы не можем напрямую получить возвращаемое значение), чтобы я мог показать его там, где я звонил это.
Может кто-нибудь, пожалуйста, помогите мне, чтобы я мог продолжить мой код.