form static method
Reads a multi-field form in line mode.
Fields are prompted in order. Per-field validators use the text fallback
convention: return null for success or an error message. The optional
crossValidator runs after all fields are accepted. Returning '' from
either validator type is also accepted as success for backwards
compatibility.
Implementation
static FallbackFormResult? form({
required List<FallbackFormField> fields,
String? Function(List<String> values)? crossValidator,
bool returnDefaultOnEndOfInput = true,
}) {
if (fields.isEmpty) return const FallbackFormResult([]);
while (true) {
final values = <String>[];
for (final field in fields) {
final value = _readText(
title: _fallbackFormFieldTitle(field),
defaultValue: field.masked ? null : _initialFormDefault(field),
required: field.required,
validator: field.validator,
returnDefaultOnEndOfInput: returnDefaultOnEndOfInput,
);
if (value == null) return null;
values.add(value);
}
final error = normalizeValidationError(crossValidator?.call(values));
if (error == null) return FallbackFormResult(values);
_writeError(error);
}
}