getRules static method

List<ValidationRule> getRules({
  1. int minLength = 3,
  2. int maxLength = 20,
  3. Set<String> forbiddenCharacters = const {'@'},
  4. RegExp? allowedPattern,
})

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',
      ),
  ];
}