validate method

  1. @override
ValidationResult validate()
override

Implementation

@override
ValidationResult validate() {
  if (isOptional && value == null) {
    return ValidationResult(isValid: true);
  }

  if (!isOptional && value == null) {
    return ValidationResult(
        isValid: false, message: getMessage('missing $propertyName'));
  }

  if (value is! num && !validators.isNumeric(value.toString())) {
    return ValidationResult(isValid: false, message: invalidNumberMessage);
  }
  final newValue = value = num.parse(value.toString());
  if (isNegative && newValue > -1) {
    return ValidationResult(isValid: false, message: notNegativeMessage);
  }
  if (isPositive && newValue < 0) {
    return ValidationResult(isValid: false, message: notPositiveMessage);
  }

  if (isDivisibleBy != null) {
    try {
      if (newValue % 1 != 0) {
        return ValidationResult(
            isValid: false, message: notDivisibleByMessage);
      }
      if ((newValue.toInt()) % isDivisibleBy! != 0) {
        return ValidationResult(
            isValid: false, message: notDivisibleByMessage);
      }
    } catch (e) {
      return ValidationResult(isValid: false, message: notDivisibleByMessage);
    }
  }

  if (max != null && newValue > max!.toDouble()) {
    return ValidationResult(
        isValid: false, message: incorrectMaxRangeInvalidMessage);
  }

  if (min != null && newValue < min!.toDouble()) {
    return ValidationResult(
        isValid: false, message: incorrectMinRangeInvalidMessage);
  }

  return ValidationResult(isValid: true);
}