2
0
mirror of https://github.com/inventree/inventree-app.git synced 2026-03-11 12:45:00 +00:00

[bug] Fix boolean fields (#788)

- Use Switch field in API forms
- Retain custom tri-state filter button
- Closes https://github.com/inventree/inventree-app/issues/785
This commit is contained in:
Oliver
2026-02-28 15:47:07 +11:00
committed by GitHub
parent d45ed1f838
commit a90fdd4323
3 changed files with 29 additions and 3 deletions

View File

@@ -3,6 +3,7 @@
- Adds button to check server connection
- Fixes bug fetching sales order shipments
- Fix for boolean fields in API forms
## 0.22.3 - February 2026
---

View File

@@ -293,6 +293,8 @@ class APIFormField {
return _constructString();
case "boolean":
return _constructBoolean();
case "boolean filter":
return _constructBooleanFilter();
case "related field":
return _constructRelatedField();
case "integer":
@@ -874,6 +876,29 @@ class APIFormField {
// Construct a boolean input element
Widget _constructBoolean() {
bool v = false;
if (value is bool) {
v = value as bool;
} else {
v = false;
}
return ListTile(
title: Text(label),
subtitle: Text(helpText),
contentPadding: EdgeInsets.zero,
trailing: Switch(
value: v,
onChanged: (val) {
setFieldValue(val);
},
),
);
}
// Construct a tri-state boolean filter element
Widget _constructBooleanFilter() {
String initial_value = "null";
bool allow_null = (getParameter("tristate") ?? false) as bool;
@@ -930,8 +955,8 @@ class APIFormField {
return ListTile(
title: Text(label),
contentPadding: EdgeInsets.zero,
subtitle: Text(helpText),
contentPadding: EdgeInsets.zero,
trailing: SegmentedButton<String>(
segments: buttons,
selected: {initial_value},
@@ -1457,7 +1482,7 @@ class APIFormWidgetState extends State<APIFormWidget> {
if (field.isSimple) {
// Simple top-level field data
data[field.name] = field.data["value"];
data[field.name] = field.data["value"] ?? field.defaultValue;
} else {
// Not so simple... (WHY DID I MAKE THE API SO COMPLEX?)
if (field.parent.isNotEmpty) {

View File

@@ -207,7 +207,7 @@ abstract class PaginatedSearchState<T extends PaginatedSearchWidget>
}
Map<String, dynamic> filter = {
"type": "boolean",
"type": "boolean filter",
"display_name": label,
"label": label,
"help_text": help_text,