age<E> static method

Rule<DateTime, E> age<E>(
  1. int minAge,
  2. int maxAge, {
  3. required E error,
})

Validates that the person's age (based on birth date) is within range.

DateRules.age(18, 120, error: 'Must be 18-120 years old')

Implementation

static Rule<DateTime, E> age<E>(int minAge, int maxAge, {required E error}) =>
    PredicateRule(
      predicate: (value) {
        final now = DateTime.now();
        final age = now.year - value.year;
        final adjustedAge =
            (now.month < value.month ||
                    (now.month == value.month && now.day < value.day))
                ? age - 1
                : age;
        return adjustedAge >= minAge && adjustedAge <= maxAge;
      },
      error: error,
    );