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.
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.
MinValueValidator<T extends num>– Checks minimum value (int/double).MaxValueValidator<T extends num>– Checks maximum value (int/double).
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.
OtpValidator– Validates OTP codes (custom length).PinNumberValidator– 4 or 6-digit PIN validation.ConfirmPasswordValidator– Compares two password fields.
The package provides powerful extensions for validating file paths and XFile objects:
- Image Validation: Validate image paths (
String?) andXFileobjects. - Video Validation: Validate video paths (
String?) andXFileobjects. - Audio Validation: Validate audio paths (
String?) andXFileobjects. - Document Validation: Validate document paths (
String?) andXFileobjects. - List Validation: Validate lists of file paths or
XFileobjects.
Add to pubspec.yaml:
dependencies:
i_validator: <latest_version>Run:
flutter pub getfinal error = EmailValidator().validate("invalid-email");
print(error); // "Enter a valid email" final validator = PasswordValidator(
minLength: 8,
strength: PasswordStrength.strong, // Requires uppercase, number, symbol
);
print(validator.validate("weak")); // "Password must be at least 8 characters" final error = OtpValidator(length: 6).validate("123");
print(error); // "OTP must be 6 digits" final error = RequiredFieldValidator<String>().validate("");
print(error); // "This field is required" 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 // Validate image path
final String? path = "profile.jpg";
final error = path.validateImagePath();
// Validate XFile object
final xfile = XFile('document.pdf');
final docError = xfile.validateDocumentFile();final error = RequiredListValidator().validate([]);
print(error); // "List cannot be empty" final error = RequiredDateValidator().validate(null);
print(error); // "A date is required" MIT – See LICENSE for details.