validate static method

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

Implementation

static String? validate(
  String? value, {
  int minLength = 3,
  int maxLength = 20,
  Set<String> forbiddenCharacters = const {'@'},
  RegExp? allowedPattern,
}) {
  final rules = <ValidationRule>[
    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) {
    rules.add(
      Validators.custom(
        (value) =>
            value != null &&
                    forbiddenCharacters.any((char) => value.contains(char))
                ? ''
                : null,
        message: 'Username cannot contain: ${forbiddenCharacters.join(', ')}',
      ),
    );
  }

  if (allowedPattern != null) {
    rules.add(
      Validators.pattern(
        allowedPattern.pattern,
        message: 'Username contains invalid characters',
      ),
    );
  }

  return Validators.validate(value, rules);
}