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β Booleantruevalidation (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.
π Links
Libraries
- constant/reg_constant
- constant/validation_messages
- constant/validation_patterns
- enum/password_strength
- extensions/file_validation_extension
- extensions/image_validation_extension
- extensions/validator_patterns
- extensions/x_file_image_validation_extension
- 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