Как добавить конкретный валидатор c домена во флаттерную форму? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть страница входа в систему, но я хочу, чтобы форма принимала только электронные письма с определенным доменом c (например, @ ab c. net). Вот код, который у меня есть. Как бы это реализовать?

Widget _showEmailInput() {
    return new Padding(
        padding: EdgeInsets.fromLTRB(15.0, 15.0, 15.0, 0.0),
        child: TextFormField(
          maxLines: 1,
          keyboardType: TextInputType.emailAddress,
          autofocus: false,
          decoration: new InputDecoration(
              hintText: 'Enter Email', icon: Icon(Icons.email, color: black)),
          validator: (value) => value.isEmpty ? 'Email can not be empty' : null,
          onSaved: (value) => _email = value.trim(),
        ));
  }

1 Ответ

0 голосов
/ 10 июля 2020

Метод 1

var isValid = value.toLowerCase().endsWith('your_domain.com');

Метод 2 (RegEx)

validator: (value) {
  if (value.isEmpty) return 'Email can not be empty'

  var rx = RegExp("\b*@abc\.net\$",caseSensitive: false);
  return rx.hasMatch(value) ? null : 'Invalid domain name';
}

Просто замените ab c. net на желаемое доменное имя

print(rx.hasMatch('sdfsdf@sdf.net')); // false
print(rx.hasMatch('sdfsdf@abc.net')); // true
print(rx.hasMatch('sdfsdf@ABC.org')); // false
print(rx.hasMatch('sdfsdf@ABc.net')); // true
...