smart_validator

A comprehensive validation package for Dart & Flutter.

Supports: Email, Phone, Password, GST, PAN, Aadhaar, URL, IP Address, Credit Card, and UPI ID validation — including India-specific validators.


Features

Validator What it checks
EmailValidator Valid email format
PhoneValidator Indian & international phone numbers
PasswordValidator Strength, rules, match check
IndiaValidator GST, PAN, Aadhaar
UrlValidator HTTP/HTTPS URLs
IpValidator IPv4 and IPv6 addresses
CreditCardValidator Luhn algorithm + card type detection
UpiValidator UPI ID format + known handles

Installation

Add this to your pubspec.yaml:

dependencies:
  smart_validator: ^0.0.1

Then run:

flutter pub get

Usage

import 'package:smart_validator/smart_validator.dart';

Email

EmailValidator.isValid("test@gmail.com");   // true
EmailValidator.isValid("invalid");          // false

// With result message
final result = EmailValidator.validate("test@gmail.com");
print(result.isValid);   // true
print(result.message);   // "Valid email address"

// As Flutter form validator
TextFormField(
  validator: EmailValidator.formValidator(),
)

Phone (Indian)

PhoneValidator.isValidIndian("9876543210");  // true
PhoneValidator.isValidIndian("1234567890");  // false

TextFormField(
  validator: PhoneValidator.formValidator(),
)

Password

PasswordValidator.isStrong("Pass@1234");   // true
PasswordValidator.isStrong("password");   // false

// Check strength
PasswordValidator.getStrength("Pass@1234"); // PasswordStrength.strong

// Match two passwords
PasswordValidator.passwordsMatch("Pass@123", "Pass@123"); // true

Indian GST, PAN, Aadhaar

IndiaValidator.isValidGST("27AAAPZ2323J1ZW");  // true
IndiaValidator.isValidPAN("ABCDE1234F");         // true
IndiaValidator.isValidAadhaar("234123412341");   // true

TextFormField(validator: IndiaValidator.gstFormValidator())
TextFormField(validator: IndiaValidator.panFormValidator())
TextFormField(validator: IndiaValidator.aadhaarFormValidator())

URL

UrlValidator.isValid("https://flutter.dev");  // true
UrlValidator.isSecure("https://flutter.dev"); // true
UrlValidator.isSecure("http://flutter.dev");  // false

IP Address

IpValidator.isValidIPv4("192.168.1.1");                          // true
IpValidator.isValidIPv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334"); // true
IpValidator.isValid("192.168.1.1");                              // true (v4 or v6)

Credit Card

CreditCardValidator.isValid("4111111111111111"); // true (Luhn check)
CreditCardValidator.getCardType("4111111111111111"); // CardType.visa

UPI ID

UpiValidator.isValid("name@okaxis");        // true
UpiValidator.isKnownHandle("name@paytm");  // true
UpiValidator.isKnownHandle("name@xyz");    // false

ValidationResult

Every validator has a .validate() method returning a ValidationResult:

final result = EmailValidator.validate("bad-email");
print(result.isValid);  // false
print(result.message);  // "Enter a valid email address"

Flutter Form Integration

Every validator has a .formValidator() method for direct use in TextFormField:

TextFormField(
  validator: EmailValidator.formValidator(
    errorMessage: "Please enter your email", // optional custom message
  ),
)

License

MIT License. See LICENSE for details.

Libraries

smart_validator_india
Smart Validator - A comprehensive validation package for Dart & Flutter.