From 194eedbb303f7d10c3f4886058f0c7d7ec55a856 Mon Sep 17 00:00:00 2001 From: "Michael W. Aziz" Date: Tue, 1 Apr 2025 15:02:07 +0200 Subject: [PATCH] [0.1.2] --- lib/src/form/src/controller.dart | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/src/form/src/controller.dart b/lib/src/form/src/controller.dart index a1442d6..0d93501 100644 --- a/lib/src/form/src/controller.dart +++ b/lib/src/form/src/controller.dart @@ -36,7 +36,7 @@ class AstromicFormController extends FormController { this.errorStream, }) : super(initialValues) { // Add states and messages based on initial controller. - _addInitialControllers(initialValues ?? {}); + _addInitialControllers(initialValues); } /// Does the controller has a field with this ID. @@ -48,7 +48,7 @@ class AstromicFormController extends FormController { /// Set the field state and message of a specific field using it's ID. void setState(String fieldId, AstromicFieldState state, {String? message}) { if (!fieldStates.containsKey(fieldId)) { - throw Exception('Field ID $fieldId does not exist.'); + throw Exception('The state of the field ID $fieldId does not exist.'); } fieldStates[fieldId] = state; fieldMessages[fieldId] = message; @@ -99,7 +99,7 @@ class AstromicFormController extends FormController { TextEditingController controller(String id, {String? initialText, bool isObscure = false}) { TextEditingController ret = super.controller(id, initialText: initialText, isObscure: isObscure); // - if (!hasKey(id)) { + if (getState(id) == null) { fieldStates.addEntries(>[MapEntry(id, AstromicFieldState.idle)]); fieldMessages.addEntries(>[MapEntry(id, null)]); } @@ -112,18 +112,20 @@ class AstromicFormController extends FormController { } //SECTION - Helper Methods - _addInitialControllers(Map initialValues) { - // Add in the initial field states... - fieldStates.addEntries(initialValues.entries.toList().map((MapEntry e) => MapEntry( - e.key, // controller ID - AstromicFieldState.idle, // Initial state of any new controller is Idle - ))); + void _addInitialControllers(Map? initialValues) { + if (initialValues != null) { + // Add in the initial field states... + fieldStates.addEntries(initialValues.entries.map((MapEntry e) => MapEntry( + e.key, // controller ID + AstromicFieldState.idle, // Initial state of any new controller is Idle + ))); - // Add in the initial field messages... - fieldMessages.addEntries(initialValues.entries.toList().map((MapEntry e) => MapEntry( - e.key, // Controller ID - null, // The initial message it has which is Null - ))); + // Add in the initial field messages... + fieldMessages.addEntries(initialValues.entries.toList().map((MapEntry e) => MapEntry( + e.key, // Controller ID + null, // The initial message it has which is Null + ))); + } } //!SECTION }