-1

How can I validate email after @ in email address ? I need to show error if user input only "username@".

String emailValidator(String email, BuildContext context) {
  if (email == null || email.length == 0) {
    return AppLocalizations.of(context).translate('validators.requiredField');
  }

  if (email == null || !email.contains("@")) {
    return AppLocalizations.of(context).translate('validators.invalidEmail');
  }

  return null;
}

  • Does this answer your question? [How can I validate an email address in JavaScript?](https://stackoverflow.com/questions/46155/how-can-i-validate-an-email-address-in-javascript) – Throvn Jun 21 '22 at 09:16
  • Does this answer your question? [How should I check if the input is an email address in Flutter?](https://stackoverflow.com/questions/16800540/how-should-i-check-if-the-input-is-an-email-address-in-flutter) – Dharmesh Mansata Aug 05 '22 at 07:37

4 Answers4

1

You can use regex

Create an extension on String

extension RegexExt on String {
  bool validateEmail() => RegExp(
          r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
      .hasMatch(this);
}

Usage

String emailValidator(String email, BuildContext context) {
  if (email == null || email.length == 0) {
    return AppLocalizations.of(context).translate('validators.requiredField');
  }

  return email.validateEmail() ? null : AppLocalizations.of(context).translate('validators.invalidEmail'); 
}
Phil
  • 795
  • 1
  • 5
  • 15
1

Use email_validator package of flutter

               Form(
                    autovalidateMode:AutovalidateMode.always,
                    child:TextFormField(
                      keyboardType: TextInputType.emailAddress,
                      validator: (value)=>EmailValidator.validate(value!) ? null : "Please enter a valid email",
                      controller: emailController,
                    ),
                  )
        

email_validator will take email as input and returns true if email is validate or false I have used it with textfield you can also try

String email = 'username@gail.com';
bool isValid = EmailValidator.validate(email);

print('Email is valid? ' + (isValid ? 'yes' : 'no'));
0

I think regex would be the best option for that. Adding a package for this easy task seems like too much overhead for me.

This question has been answered lots of times here

The expression:

bool emailValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(email);
Throvn
  • 795
  • 7
  • 19
0

you can use this method to check email validation

static bool isEmailValid(String email) {
 return RegExp(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,}))$')
     .hasMatch(email);
}