Список категорий с каталогом(Додо)
//Создаем GlobalKey для обращения по ключу и последующей проверки состояния.
final GlobalKey<FormState> _formKey = GlobalKey<FormState>
//Оборачиваем в форму поля ввода и добавляем ключ:
child: Form(
key: _formKey
// Проверка валидации
validator: (String?value) {
if (value!.isEmpty) {
return "Пустое поле";
}
else if(!RegExp(r'(^(?:[+?0]9)?[0-9]{10,12}$)').hasMatch(value) || value.length < 12 )
{
return "Недопустимый формат номера";
}
return null;
},
Проверка и отправка кода на номер через Firebase
//Функция отправки и проверки кода подтверждения
_verifyPhone() async
{
await FirebaseAuth.instance.verifyPhoneNumber( //Вызываем проверку номера
phoneNumber: "+7${widget.phone}", // Переменная хранящаяя номер пользователя с указанием кода страны
verificationCompleted: (PhoneAuthCredential credential) async // Проверка на корректное срабатывание и завершение проверки(Выполняется последней).
{
await FirebaseAuth.instance.signInWithCredential(credential)
.then((value) async{
if(value.user != null) {
print("User logged in");
}
});
},
verificationFailed: (FirebaseAuthException error) //Обработчик сбоев, при возникновения ошибки выводить соответствующее сообщение
{
print(error.message);
},
codeSent: (String verificationID, int? resendToken) //Отправляет код на указанный номер, и производит проверку правильности введеного кода
{
setState(() {
_verificationCode = verificationID;
});
},
codeAutoRetrievalTimeout: (String verificationID) //Отправляет новый код после тайм-аута. И проверяет правильность
{
setState(() {
_verificationCode = verificationID;
});
},
timeout: Duration(seconds: 60)); //Через указанное время отправится новый код. Прошлый перестанет быть действительным,
}
}
Отключение reCaptcha на IOS
await FirebaseAuth.instance.setSettings(appVerificationDisabledForTesting: true);js
_verifyPhone() async
{
await FirebaseAuth.instance.setSettings(appVerificationDisabledForTesting: true); //Отключение рекапчи ios
await FirebaseAuth.instance.verifyPhoneNumber( //Вызываем проверку номера
phoneNumber: "+7${widget.phone}", // Переменная хранящаяя номер пользователя с указанием кода страны
verificationCompleted: (PhoneAuthCredential credential) async // Проверка на корректное срабатывание и завершение проверки(Выполняется последней).
{
await FirebaseAuth.instance.signInWithCredential(credential)
.then((value) async{
if(value.user != null) {
Navigator.push(context,MaterialPageRoute(builder: (context) => CardListView()));
}
});
},
verificationFailed: (FirebaseAuthException error) //Обработчик сбоев, при возникновения ошибки выводить соответствующее сообщение
{
print(error.message);
},
codeSent: (String verificationID, int? resendToken) //Отправляет код на указанный номер, и производит проверку правильности введеного кода
{
setState(() {
_verificationCode = verificationID;
});
},
codeAutoRetrievalTimeout: (String verificationID) //Отправляет новый код после тайм-аута. И проверяет правильность
{
setState(() {
_verificationCode = verificationID;
});
},
timeout: Duration(seconds: 60)); //Через указанное время отправится новый код. Прошлый перестанет быть действительным,
}
@override //Переинициализируем для проверки состояния
void initState()
{
super.initState();
_verifyPhone();
}