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 (Extensions)

The package provides powerful extensions for validating file paths and XFile objects:

  • Image Validation: Validate image paths (String?) and XFile objects.
  • Video Validation: Validate video paths (String?) and XFile objects.
  • Audio Validation: Validate audio paths (String?) and XFile objects.
  • Document Validation: Validate document paths (String?) and XFile objects.
  • List Validation: Validate lists of file paths or XFile objects.

🚀 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. File Validation (Extensions)

// Validate image path
final String? path = "profile.jpg";
final error = path.validateImagePath(); 

// Validate XFile object
final xfile = XFile('document.pdf');
final docError = xfile.validateDocumentFile();

7. List Validation

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

8. Date Validation

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

📜 License

MIT – See LICENSE for details.



Libraries

constant/file_extensions
constant/file_field_error_messages
constant/image_constants/image_extensions
constant/image_constants/image_field_error_messages
constant/reg_constant
constant/validation_messages
constant/validation_patterns
enum/password_strength
extensions/file_validator_extensions/audio/audio_list_file_path_validation_extension
extensions/file_validator_extensions/audio/audio_list_x_file_validation_extension
extensions/file_validator_extensions/audio/audio_validation_extension
extensions/file_validator_extensions/audio/audio_x_file_validation_extension
extensions/file_validator_extensions/document/document_list_file_path_validation_extension
extensions/file_validator_extensions/document/document_list_x_file_validation_extension
extensions/file_validator_extensions/document/document_validation_extension
extensions/file_validator_extensions/document/document_x_file_validation_extension
extensions/file_validator_extensions/image/image_list_file_path_validation_extension
extensions/file_validator_extensions/image/image_list_x_file_validation_extension
extensions/file_validator_extensions/image/image_validation_extension
extensions/file_validator_extensions/image/image_x_file_validation_extension
extensions/file_validator_extensions/video/video_list_file_path_validation_extension
extensions/file_validator_extensions/video/video_list_x_file_validation_extension
extensions/file_validator_extensions/video/video_validation_extension
extensions/file_validator_extensions/video/video_x_file_validation_extension
extensions/validation_error_list_extension
extensions/validator_patterns
i_validator
utils/validator_mixin
utils/verify
validators/confirm_password_required_validator
validators/confirm_password_validator
validators/decimal_validator
validators/email_validator
validators/i_validator
validators/integer_validator
validators/max_value_validator
validators/min_length_validator
validators/min_value_validator
validators/negative_number_validator
validators/non_empty_string_validator
validators/number_validator
validators/otp_validation
validators/password_validator
validators/phone_validator
validators/pin_number_validator
validators/positive_number_validator
validators/regex_validator
validators/required_date_validator
validators/required_field_validator
validators/required_list_validator
validators/required_string_validator
validators/required_true_validator