diff --git a/lib/components/generated_form.dart b/lib/components/generated_form.dart index 1a7e45e..c84b630 100644 --- a/lib/components/generated_form.dart +++ b/lib/components/generated_form.dart @@ -150,6 +150,7 @@ class _GeneratedFormState extends State { Map values = {}; late List> formInputs; List> rows = []; + String? initKey; // If any value changes, call this to update the parent with value and validity void someValueChanged({bool isBuilding = false}) { @@ -169,13 +170,10 @@ class _GeneratedFormState extends State { widget.onValueChanges(returnValues, valid, isBuilding); } - @override - void initState() { - super.initState(); - + initForm() { + initKey = widget.key.toString(); // Initialize form values as all empty values.clear(); - int j = 0; for (var row in widget.items) { for (var e in row) { values[e.key] = e.defaultValue; @@ -245,8 +243,17 @@ class _GeneratedFormState extends State { someValueChanged(isBuilding: true); } + @override + void initState() { + super.initState(); + initForm(); + } + @override Widget build(BuildContext context) { + if (widget.key.toString() != initKey) { + initForm(); + } for (var r = 0; r < formInputs.length; r++) { for (var e = 0; e < formInputs[r].length; e++) { if (widget.items[r][e] is GeneratedFormSwitch) { diff --git a/lib/pages/add_app.dart b/lib/pages/add_app.dart index a216a7e..4386d22 100644 --- a/lib/pages/add_app.dart +++ b/lib/pages/add_app.dart @@ -327,6 +327,7 @@ class _AddAppPageState extends State { height: 16, ), GeneratedForm( + key: Key(pickedSource.runtimeType.toString()), items: pickedSource! .combinedAppSpecificSettingFormItems, onValueChanges: (values, valid, isBuilding) {