diff --git a/lib/src/form/src/controller.dart b/lib/src/form/src/controller.dart index 5472533..2be7a9a 100644 --- a/lib/src/form/src/controller.dart +++ b/lib/src/form/src/controller.dart @@ -80,13 +80,17 @@ class AstromicFormController extends FormController { return true; } + /// Prepare a hosted value. + void prepareValue(String id, bool isRequired) { + return _hostedValues.addEntries(>[MapEntry(id, (null, isRequired))]); + } + /// Set the value of a hosted state variable using it's ID. void setValue(String id, T data, {bool isRequired = false}) { - if (_hostedValues.keys.toList().contains(id)) { - _hostedValues[id] = (data, isRequired); - } else { - _hostedValues.addEntries(>[MapEntry(id, (data, isRequired))]); + if (!_hostedValues.keys.toList().contains(id)) { + prepareValue(id, isRequired); } + _hostedValues[id] = (data, isRequired); _hostedValueValidationStreamController.add((id, false)); } diff --git a/lib/src/form/src/form_value_wrapper.dart b/lib/src/form/src/form_value_wrapper.dart index 7ba9c85..3e9bf17 100644 --- a/lib/src/form/src/form_value_wrapper.dart +++ b/lib/src/form/src/form_value_wrapper.dart @@ -22,6 +22,7 @@ class FormValueWrapper extends StatefulWidget { //SECTION - Widget Arguments final AstromicFormController controller; final String id; + final bool isRequired; final Widget Function(T? value, bool isErroredForValidation, void Function(T value, bool isRequired) valueSetter) builder; //!SECTION // @@ -29,6 +30,7 @@ class FormValueWrapper extends StatefulWidget { super.key, required this.controller, required this.id, + required this.isRequired, required this.builder, }); @@ -59,7 +61,7 @@ class _FormValueWrapperState extends State> { //s1 --State // //s1 --Controllers & Listeners - // _formController = widget.controller; + widget.controller.prepareValue(widget.id, widget.isRequired); //s1 --Controllers & Listeners // //s1 --Late & Async Initializers