getRules static method

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

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