range static method
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);
}