validate method

  1. @override
FutureOr<ValidationResult?> validate(
  1. BuildContext context,
  2. String? value,
  3. FormValidationMode state
)
override

Validates the given value and returns a validation result.

This method performs the actual validation logic and should return null if the value is valid, or a ValidationResult describing the validation error if invalid.

Parameters:

  • context (BuildContext): The build context for localization access
  • value (T?): The value to validate (may be null)
  • lifecycle (FormValidationMode): The current validation trigger mode

Returns a FutureOr<ValidationResult?> that is null for valid values or contains error information for invalid values.

Implementation

@override
FutureOr<ValidationResult?> validate(
    BuildContext context, String? value, FormValidationMode state) {
  if (value == null) {
    return null;
  }
  if (requireDigit && !RegExp(r'\d').hasMatch(value)) {
    return InvalidResult(
        message ??
            Localizations.of(context, ShadcnLocalizations).formPasswordDigits,
        state: state);
  }
  if (requireLowercase && !RegExp(r'[a-z]').hasMatch(value)) {
    return InvalidResult(
        message ??
            Localizations.of(context, ShadcnLocalizations)
                .formPasswordLowercase,
        state: state);
  }
  if (requireUppercase && !RegExp(r'[A-Z]').hasMatch(value)) {
    return InvalidResult(
        message ??
            Localizations.of(context, ShadcnLocalizations)
                .formPasswordUppercase,
        state: state);
  }
  if (requireSpecialChar && !RegExp(r'[\W_]').hasMatch(value)) {
    return InvalidResult(
        message ??
            Localizations.of(context, ShadcnLocalizations)
                .formPasswordSpecial,
        state: state);
  }
  return null;
}