i_validator 1.1.6

SDKflutter
Platformandroidioswindowslinuxmacos

i_validator package provides a collection of common validation utilities such as email, password, phone number, OTP, and required fields validation. It also includes custom validation for confirm passwords and file formats, along with mixins for Stream-based validation.

i_validator

A Flutter package offering robust validation utilities for forms, inputs, and business logic. Includes predefined validators for strings, numbers, dates, lists, and custom regex patterns with type-safe generic support.


Features

📜 Core Validators

  • IValidator<T> – Generic interface for all validators (supports any input type).
  • RequiredFieldValidator<T> – Ensures non-null/non-empty values for any type.
  • RequiredStringValidator – Non-empty text validation.
  • RequiredTrueValidator – Boolean true validation (e.g., for checkboxes).
  • RequiredListValidator – Validates non-empty lists.
  • RequiredDateValidator – Ensures a date is provided.

🔢 Numeric Validators

  • MinValueValidator<T extends num> – Checks minimum value (int/double).
  • MaxValueValidator<T extends num> – Checks maximum value (int/double).

📝 Text Validators

  • EmailValidator – RFC-compliant email format validation.
  • PasswordValidator – Configurable strength levels (easy, medium, strong).
  • MinLengthValidator – Enforces minimum string length.
  • RegexValidator – Custom regex pattern validation (e.g., URLs, usernames).
  • PhoneNumberValidator – Global phone number format support.

🔐 Security Validators

  • OtpValidator – Validates OTP codes (custom length).
  • PinNumberValidator – 4 or 6-digit PIN validation.
  • ConfirmPasswordValidator – Compares two password fields.

📂 File Validation

  • File type validation – Checks image formats (e.g., PNG, JPEG) via extensions.

🚀 Installation

Add to pubspec.yaml:

dependencies:
  i_validator: <latest_version>

Run:

flutter pub get

🛠 Usage

1. Email Validation

final error = EmailValidator().validate("invalid-email");  
print(error); // "Enter a valid email"  

2. Password Validation (Strong)

final validator = PasswordValidator(  
  minLength: 8,  
  strength: PasswordStrength.strong, // Requires uppercase, number, symbol  
);  
print(validator.validate("weak")); // "Password must be at least 8 characters"  

3. OTP Validation (6-digit)

final error = OtpValidator(length: 6).validate("123");  
print(error); // "OTP must be 6 digits"  

4. Required Field Validation

final error = RequiredFieldValidator<String>().validate("");  
print(error); // "This field is required"  

5. Custom Regex Validation

final validator = RegexValidator(  
  pattern: r'^[A-Z][a-z]*$', // Starts with uppercase  
  errorText: "Must start with a capital letter",  
);  
print(validator.validate("flutter")); // Error message  

6. List Validation

final error = RequiredListValidator().validate([]);  
print(error); // "List cannot be empty"  

7. Date Validation

final error = RequiredDateValidator().validate(null);  
print(error); // "A date is required"  

📜 License

MIT – See LICENSE for details.