range static method

FallbackRangeResult? range({
  1. required String title,
  2. String? startTitle,
  3. String? endTitle,
  4. num? startDefault,
  5. num? endDefault,
  6. num? min,
  7. num? max,
  8. FallbackNumberValidator? validator,
  9. bool returnDefaultOnEndOfInput = true,
})

Reads an ordered numeric range using the same validation path as number.

Start and end are prompted independently. Each accepted input must pass finite-number parsing, optional min/max bounds, and validator. Defaults are clamped before they are offered. The returned values are ordered so FallbackRangeResult.start is always less than or equal to FallbackRangeResult.end.

Implementation

static FallbackRangeResult? range({
  required String title,
  String? startTitle,
  String? endTitle,
  num? startDefault,
  num? endDefault,
  num? min,
  num? max,
  FallbackNumberValidator? validator,
  bool returnDefaultOnEndOfInput = true,
}) {
  final lower = _lowerBound(min, max);
  final upper = _upperBound(min, max);
  final normalizedStartDefault = _clampFiniteDefault(
    startDefault,
    min: lower,
    max: upper,
  );
  final normalizedEndDefault = _clampFiniteDefault(
    endDefault,
    min: lower,
    max: upper,
  );

  final start = number(
    title: startTitle ?? '$title start',
    defaultValue: normalizedStartDefault,
    min: lower,
    max: upper,
    validator: validator,
    returnDefaultOnEndOfInput: returnDefaultOnEndOfInput,
  );
  if (start == null) return null;

  final end = number(
    title: endTitle ?? '$title end',
    defaultValue: normalizedEndDefault,
    min: lower,
    max: upper,
    validator: validator,
    returnDefaultOnEndOfInput: returnDefaultOnEndOfInput,
  );
  if (end == null) return null;

  final ordered = _orderedRange(
    start,
    end,
    min: lower,
    max: upper,
  );
  return FallbackRangeResult(start: ordered.start, end: ordered.end);
}