number static method
Reads a number.
Empty input returns defaultValue. End-of-input also returns
defaultValue unless returnDefaultOnEndOfInput is false. Invalid
numbers, out-of-range values, and validator errors are reported before
asking again.
Implementation
static num? number({
required String title,
num? defaultValue,
num? min,
num? max,
FallbackNumberValidator? validator,
bool returnDefaultOnEndOfInput = true,
}) {
while (true) {
_writePrompt(title, defaultValue: defaultValue?.toString());
final line = TerminalContext.input.readLineSync();
if (line == null) {
return returnDefaultOnEndOfInput ? defaultValue : null;
}
final text = line.trim();
if (text.isEmpty) return defaultValue;
final value = num.tryParse(text);
if (value == null) {
_writeError('Enter a number.');
continue;
}
if (!value.isFinite) {
_writeError('Enter a finite number.');
continue;
}
if (min != null && value < min) {
_writeError('Enter a number at least $min.');
continue;
}
if (max != null && value > max) {
_writeError('Enter a number at most $max.');
continue;
}
final error = _numberValidationError(value, validator);
if (error != null) {
_writeError(error);
continue;
}
return value;
}
}