Включить проверку "пробел" в флаттер адреса электронной почты - PullRequest
0 голосов
/ 16 мая 2019

Может кто-нибудь подскажите пожалуйста как добавить "пробел" проверить адрес электронной почты? я пробовал email.contains ("") но это не так работал.

Я не получаю сообщение об ошибке при вводе неверного адреса электронной почты

 import 'dart:async';


class Validators{
  final validEmail = StreamTransformer<String, String>.fromHandlers(
    handleData: (email, sink){
      if(email.contains('@')){
        sink.add(email);
      }else if(email.contains(" ")){
          sink.addError('Enter a valid email');
      }else{
          sink.addError('Enter a valid email');

      }
    }
  );

  final validPassword  = StreamTransformer<String, String>.fromHandlers(
    handleData: (password, sink){
      if(password.length > 4){
        sink.add(password);
      }else{
        sink.addError('Enter a valid password');
      }
    }
  );
}

Я хочу, чтобы ошибка "Неверный адрес электронной почты" отображалась как

Ответы [ 5 ]

0 голосов
/ 11 июня 2019

Пожалуйста, не используйте проверенное вручную регулярное выражение для проверки адресов электронной почты. Например, пробелы в адресах электронной почты разрешены, если они правильно указаны в кавычках, поэтому первоначальный вопрос уже виноват. Кроме того, все эти регулярные выражения отклоняют многие совершенно действительные адреса электронной почты, например мой автоответчик на fred&barney@stonehenge.com. (Вперед ... отправьте это письмо!)

Если вы собираетесь проверять электронную почту, используйте https://pub.dev/packages/email_validator,, который, как я подтвердил, следует надлежащим правилам.

0 голосов
/ 16 мая 2019

Может быть сделано по рег.выражение.Вы можете использовать метод ниже, чтобы соответствовать электронной почте.

String validateEmail(String value) {
        Pattern pattern =
            r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
        RegExp regex = new RegExp(pattern);

        if (value.isEmpty) {
          return 'Please enter email address';
        } else {
          if (!regex.hasMatch(value))
            return 'Enter Valid Email';
          else
            return null;
        }
      }
0 голосов
/ 16 мая 2019

Содержит работает отлично для меня.

void main() {
  bool check;
  String email = 'tes t@test.com';

  check = email.contains(' ');

  print(check); // true
}

Я пробовал на DartPad

Возможно, вы забыли поставить пробел между кавычками.

0 голосов
/ 16 мая 2019

Вы также можете использовать Regular Expression для подтверждения адреса электронной почты. Хотя regular expressions немного сложен для понимания, он очень хорош для проверки строк и проверки шаблонов. Вот пример RegEx для проверки адреса электронной почты в Flutter / Dart

// String p to define pattern
String p = "[a-zA-Z0-9\+\.\_\%\-\+]{1,256}" +
            "\\@" +
            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
            "(" +
            "\\." +
            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
            ")+";
            //Convert string p to a RegEx
            RegExp regExp = new RegExp(p);
            //If email address matches pattern
            if (regExp.hasMatch(emailAddress)) {
              return 'Email is Valid';
            }else{ //If it doesn't match
              return 'Email is not valid';
            }
0 голосов
/ 16 мая 2019

У вас есть ошибка, в которой вы подтверждаете адрес электронной почты.Сначала вы должны проверить пробелы, а затем символ @.

handleData: (email, sink){
      if(email.contains(" ")){
          sink.addError('Enter a valid email');
      } else if(email.contains('@')){
        sink.add(email);
      } else{
          sink.addError('Enter a valid email');

      }
    }
...