diff --git a/assets/release_notes.md b/assets/release_notes.md index ad1449ee..e195b37f 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -1,3 +1,8 @@ +### 0.16.5 - September 2024 +--- + +- Allow blank values to be entered into numerical fields + ### 0.16.4 - September 2024 --- diff --git a/lib/api_form.dart b/lib/api_form.dart index e5278b81..95222800 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -471,7 +471,14 @@ class APIFormField { // Construct a floating point numerical input field Widget _constructFloatField() { - double initial = double.tryParse(value.toString()) ?? 0; + // Initial value: try to cast to a valid number + String initial = ""; + + double? initialNumber = double.tryParse(value.toString()); + + if (initialNumber != null) { + initial = simpleNumberString(initialNumber); + } return TextFormField( decoration: InputDecoration( @@ -481,9 +488,15 @@ class APIFormField { helperStyle: _helperStyle(), hintText: placeholderText, ), - initialValue: simpleNumberString(initial), + initialValue: initial, keyboardType: TextInputType.numberWithOptions(signed: true, decimal: true), validator: (value) { + value = value?.trim() ?? ""; + + // Allow empty numbers, *if* this field is not required + if (value.isEmpty && !required) { + return null; + } double? quantity = double.tryParse(value.toString());