Complete API reference for MayrValidations v1.0.0
The global singleton class for managing validation configuration.
Configure global validation settings.
MayrValidationCore().setup({
'messages': {
'required': 'This field is required',
'min': 'Must be at least {min} characters',
},
'defaults': {
'min': 3,
'max': 255,
},
});Register a custom validation rule.
MayrValidationCore().registerRule('userId', (String? value, Map<String, dynamic>? params) {
if (value == null || value.isEmpty) return 'User ID is required';
if (!RegExp(r'^USR_[A-Z0-9]+$').hasMatch(value)) return 'Invalid user ID';
return null;
});Register a validation group.
MayrValidationCore().registerGroup('username', (validator, params) {
return validator.required().min(3).max(20).alphaDash();
});Get a message template from configuration.
Get a default value from configuration.
Reset all configuration (useful for testing).
The main validator class for chainable validation.
MayrValidator(dynamic value)Creates a validator instance for the given value.
Execute all validation rules and return the first error or null.
final error = MayrValidator('test')
.required()
.min(5)
.run();Execute a registered custom rule.
final error = MayrValidator('USR_123')
.custom('userId')
.run();Execute a registered validation group.
final error = MayrValidator('john_doe')
.group('username')
.run();Field must not be null or empty.
MayrValidator(value).required().run()
MayrValidator(value).required('Custom error message').run()Allows null or empty values.
MayrValidator(value).nullable().email().run()Required only if condition is true.
MayrValidator(value).requiredIf(isRequired).run()Required unless condition is true.
MayrValidator(value).requiredUnless(isOptional).run()Must be a valid string.
Must have at least the given length.
MayrValidator('abc').min(3).run() // null (valid)
MayrValidator('ab').min(3).run() // errorMust not exceed the given length.
MayrValidator('abc').max(5).run() // null (valid)
MayrValidator('abcdef').max(5).run() // errorMust be exactly the specified length.
MayrValidator('abc').size(3).run() // null (valid)Must be a valid email address.
MayrValidator('test@example.com').email().run() // null (valid)
MayrValidator('invalid').email().run() // errorMust be a valid URL.
MayrValidator('https://example.com').url().run() // null (valid)May contain only alphabetic characters.
MayrValidator('abc').alpha().run() // null (valid)
MayrValidator('abc123').alpha().run() // errorMay contain only alphanumeric characters.
MayrValidator('abc123').alphaNum().run() // null (valid)May contain letters, numbers, dashes, and underscores.
MayrValidator('user_name-123').alphaDash().run() // null (valid)Must contain only ASCII characters.
Must be entirely lowercase.
MayrValidator('abc').lowercase().run() // null (valid)
MayrValidator('ABC').lowercase().run() // errorMust be entirely uppercase.
MayrValidator('ABC').uppercase().run() // null (valid)Must match the given regular expression.
MayrValidator('abc123').regex(r'^[a-z0-9]+$').run() // null (valid)Must not match the given regular expression.
MayrValidator('abc').notRegex(r'[0-9]').run() // null (valid)Must start with the given substring.
MayrValidator('hello world').startsWith('hello').run() // null (valid)Must end with the given substring.
MayrValidator('hello world').endsWith('world').run() // null (valid)Must not start with the given substring.
Must not end with the given substring.
Must be one of the provided values.
MayrValidator('red').inList(['red', 'green', 'blue']).run() // null (valid)Must not be one of the provided values.
Must match another field's value.
MayrValidator(password).same(confirmPassword).run()Must differ from another value.
Must be a valid UUID string.
MayrValidator('550e8400-e29b-41d4-a716-446655440000').uuid().run() // null (valid)Must be a valid ULID string.
Must be a valid IP address (IPv4 or IPv6).
MayrValidator('192.168.1.1').ipAddress().run() // null (valid)Must be a valid MAC address.
MayrValidator('00:1B:44:11:3A:B7').macAddress().run() // null (valid)Must be a valid hex color.
MayrValidator('#FF5733').hexColor().run() // null (valid)Must be a valid JSON string.
MayrValidator('{"key":"value"}').json().run() // null (valid)Must be numeric.
MayrValidator(123).numeric().run() // null (valid)
MayrValidator('123').numeric().run() // null (valid)Must be an integer.
MayrValidator(123).integer().run() // null (valid)
MayrValidator(123.45).integer().run() // errorMust be a valid decimal number.
MayrValidator(123.45).decimal().run() // null (valid)Must be between the given range.
MayrValidator(5).between(1, 10).run() // null (valid)
MayrValidator(15).between(1, 10).run() // errorMust be greater than the given value.
MayrValidator(6).gt(5).run() // null (valid)Must be greater than or equal to the given value.
MayrValidator(5).gte(5).run() // null (valid)Must be less than the given value.
MayrValidator(4).lt(5).run() // null (valid)Must be less than or equal to the given value.
MayrValidator(5).lte(5).run() // null (valid)Must have exactly the specified number of digits.
MayrValidator(123).digits(3).run() // null (valid)Must have a number of digits between min and max.
MayrValidator(123).digitsBetween(2, 4).run() // null (valid)Must be a multiple of the given number.
MayrValidator(10).multipleOf(5).run() // null (valid)
MayrValidator(11).multipleOf(5).run() // errorMust be a boolean value.
MayrValidator(true).boolean().run() // null (valid)Must be accepted (true, "yes", "1", 1, "on").
MayrValidator(true).accepted().run() // null (valid)
MayrValidator('yes').accepted().run() // null (valid)Must be declined (false, "no", "0", 0, "off").
MayrValidator(false).declined().run() // null (valid)
MayrValidator('no').declined().run() // null (valid)Must be a valid list or array.
MayrValidator([1, 2, 3]).array().run() // null (valid)Must contain the specified value.
MayrValidator([1, 2, 3]).contains(2).run() // null (valid)Must not contain the specified value.
MayrValidator([1, 2, 3]).doesntContain(4).run() // null (valid)All array elements must be unique.
MayrValidator([1, 2, 3]).distinct().run() // null (valid)
MayrValidator([1, 2, 2]).distinct().run() // errorMust be a valid date.
MayrValidator(DateTime.now()).date().run() // null (valid)
MayrValidator('2023-01-01').date().run() // null (valid)Must be after the given date.
final tomorrow = DateTime.now().add(Duration(days: 1));
MayrValidator(tomorrow).after(DateTime.now()).run() // null (valid)Must be after or equal to the given date.
Must be before the given date.
Must be before or equal to the given date.
Must be equal to the given date.
Creates a MayrValidator instance for the string value.
final error = 'test@example.com'.mayrValidator()
.required()
.email()
.run();Works with nullable strings:
String? nullString;
final error = nullString.mayrValidator().required().run();
// Returns error messageimport 'package:mayr_validator/mayr_validator.dart';
void main() {
// Setup global configuration
MayrValidationCore().setup({
'messages': {
'required': 'This field is required',
'min': 'Must be at least {min} characters',
'email': 'Please enter a valid email',
},
});
// Register custom rule
MayrValidationCore().registerRule('userId', (value, params) {
if (value == null || !value.startsWith('USR_')) {
return 'Invalid user ID format';
}
return null;
});
// Register validation group
MayrValidationCore().registerGroup('username', (validator, params) {
return validator.required().min(3).max(20).alphaDash();
});
// Use in validation
final error1 = 'test@example.com'.mayrValidator()
.required()
.email()
.run();
final error2 = 'john_doe'.mayrValidator()
.group('username')
.run();
final error3 = 'USR_12345'.mayrValidator()
.custom('userId')
.run();
print('Email: ${error1 ?? "Valid"}');
print('Username: ${error2 ?? "Valid"}');
print('User ID: ${error3 ?? "Valid"}');
}When configuring global messages, you can use these placeholders:
| Placeholder | Used In | Description |
|---|---|---|
{min} |
min(), between(), digitsBetween() |
Minimum value/length |
{max} |
max(), between(), digitsBetween() |
Maximum value/length |
{size} |
size(), digits() |
Expected size/length |
{value} |
gt(), gte(), lt(), lte(), multipleOf() |
Comparison value |
{count} |
digits() |
Expected digit count |
{substring} |
startsWith(), endsWith() |
Substring value |
Example:
MayrValidationCore().setup({
'messages': {
'min': 'Must be at least {min} characters',
'between': 'Must be between {min} and {max}',
},
});