Библиотека решений

Commit Github

Удаление коммитов из репозитория

# Получить последнее состояние origin.
git fetch origin
git checkout master
git reset --hard origin/master
# Удалить неиндексированные файлы и папки.
git clean -d --force
# Повторить checkout/reset/clean для каждой испорченной ветки.

Список категорий с каталогом(Додо)

Входные данные

Заполняемые формы

Различные формы для ввода каких-либо данных пользователем. И проверка их валидации.

//Создаем 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

  1. Необходимо в функцию потверждения и отправки добавить:

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();
  }

FoodApi

Акции

В акционные страницы с промокодом можно вставить фичу:

https://medium.flutterdevs.com/scratch-card-in-flutter-8e8c6f335be2

Last updated