getRules static method
Returns a list of ValidationRules for validating usernames.
Parameters:
minLength: Minimum allowed length of the username (default 3).maxLength: Maximum allowed length of the username (default 20).forbiddenCharacters: A set of characters that usernames must not contain (default {'@'}).allowedPattern: Optional RegExp pattern that usernames must match.
Returns:
- A list of validation rules to be used in validation.
Example:
final rules = UsernameValidator.getRules(
minLength: 5,
forbiddenCharacters: {'@', '#'},
allowedPattern: RegExp(r'^[a-zA-Z0-9_]+$'),
);
Implementation
static List<ValidationRule> getRules({
int minLength = 3,
int maxLength = 20,
Set<String> forbiddenCharacters = const {'@'},
RegExp? allowedPattern,
}) {
return [
Validators.required(message: 'Username is required'),
Validators.minLength(
minLength,
message: 'Username must be at least $minLength characters long',
),
Validators.maxLength(
maxLength,
message: 'Username must not exceed $maxLength characters',
),
if (forbiddenCharacters.isNotEmpty)
Validators.custom(
(value) =>
value != null &&
forbiddenCharacters.any((char) => value.contains(char))
? ''
: null,
message: 'Username cannot contain: ${forbiddenCharacters.join(', ')}',
),
if (allowedPattern != null)
Validators.pattern(
allowedPattern.pattern,
message: 'Username contains invalid characters',
),
];
}