Как проверить электронную почту в TextFormField - PullRequest
0 голосов
/ 07 августа 2020

Существует способ подтвердить ввод пользователя с помощью TextFormField или TextField, чтобы отклонить ввод, если это не электронное письмо.

Ответы [ 3 ]

2 голосов
/ 07 августа 2020

Чтобы проверить форму, вы можете использовать флаг autovalidate и настроить валидатор для электронной почты. Существует множество вариантов, включая регулярное выражение или создание собственной программы проверки вручную, но также доступны пакеты, которые уже реализуют проверку электронной почты.

Например, https://pub.dev/packages/email_validator.

Чтобы использовать его, добавьте его в свой pubspe c:

dependencies:
  email_validator: '^1.0.0'
import 'package:email_validator/email_validator.dart';

...

Form(
  autovalidate: true,
  child: TextFormField(
    validator: (value) => EmailValidator.validate(value) ? null : "Please enter a valid email",
  ),
)

Есть много других пакетов проверки, некоторые из которых поддерживают различные типы проверки. См. Этот поиск для получения дополнительной информации https://pub.dev/packages?q=email+validation.

1 голос
/ 07 августа 2020

Вы можете использовать для этого регулярное выражение

Form и TextFormField, например,

Form(
  autovalidate: true,
  child: TextFormField(
    validator: validateEmail,
  ),
)

, затем функцию проверки

String validateEmail(String value) {
    Pattern pattern =
        r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]"
        r"{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]"
        r"{0,253}[a-zA-Z0-9])?)*$";
    RegExp regex = new RegExp(pattern);
    if (!regex.hasMatch(value) || value == null)
      return 'Enter a valid email address';
    else
      return null;
  }
0 голосов
/ 07 августа 2020
  TextFormField(
          validator: (val) => val.isEmpty || !val.contains("@")
              ? "enter a valid eamil"
              : null,
         
          decoration: InputDecoration(hintText: 'email'),
        ),

В валидаторе сначала мы проверяем, пуста ли formfeild, а также проверяем, не содержит ли введенный текст «доза» "@". Если эти условия верны, мы возвращаем текст «введите действительный адрес электронной почты», иначе мы ничего не возвращаем

...