From 67dd688db74f40c56c061361e7f056459c7eaa00 Mon Sep 17 00:00:00 2001 From: "Michael W. Aziz" Date: Fri, 16 May 2025 11:02:15 -0400 Subject: [PATCH] [SYNC] --- lib/src/form/src/controller.dart | 25 ++++++++++++++++--- .../models/form_group_structure.model.dart | 23 ++++++++++++++--- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/lib/src/form/src/controller.dart b/lib/src/form/src/controller.dart index 65d4893..9e44af9 100644 --- a/lib/src/form/src/controller.dart +++ b/lib/src/form/src/controller.dart @@ -21,10 +21,12 @@ import 'models/form_group_value.model.dart'; class AstromicFormController extends FormController { AstromicFormController({ Map? initialValues, + Map? initialHostedValues, this.errorStream, }) : super(initialValues) { - // Add states and messages based on initial controller. + // Add states and messages based on initial controllers. _addInitialControllers(initialValues); + _addInitialHostedValues(initialHostedValues); } //SECTION - Overrides @@ -254,12 +256,21 @@ class AstromicFormController extends FormController { for (final String fieldID in structure.fields) { final String fullID = standeredGroupFormat(baseID, index.toString(), fieldID); - controller(fullID); + String? preFilled; + if (structure.preFields?.containsKey(fieldID) ?? false) { + preFilled = structure.preFields![fieldID]; + } + controller(fullID, initialText: preFilled); } for (final String valueID in structure.values ?? []) { final String fullID = standeredGroupFormat(baseID, index.toString(), valueID); - controller(fullID); + (String, dynamic)? preFilled; + if (structure.preValues?.containsKey(valueID) ?? false) { + preFilled = structure.preValues![valueID]; + } + controller(fullID, initialText: preFilled?.$1); + setValue(valueID, preFilled?.$2); } } @@ -548,5 +559,13 @@ class AstromicFormController extends FormController { ))); } } + + void _addInitialHostedValues(Map? initialValues) { + if (initialValues != null) { + for (MapEntry vEntry in initialValues.entries) { + setValue(vEntry.key, vEntry.value.$1, isRequired: vEntry.value.$2); + } + } + } //!SECTION } diff --git a/lib/src/form/src/models/form_group_structure.model.dart b/lib/src/form/src/models/form_group_structure.model.dart index 2b825c4..22b6604 100644 --- a/lib/src/form/src/models/form_group_structure.model.dart +++ b/lib/src/form/src/models/form_group_structure.model.dart @@ -5,25 +5,33 @@ import 'package:flutter/foundation.dart'; class FormGroupStructure { final String id; final List fields; + final Map? preFields; final List? values; + final Map? preValues; final List<(int initialCount, FormGroupStructure structure)>? subGroups; FormGroupStructure({ required this.id, required this.fields, this.values, + this.preFields, + this.preValues, this.subGroups, }); FormGroupStructure copyWith({ String? id, List? fields, + Map? preFields, List? values, + Map? preValues, List<(int initialCount, FormGroupStructure structure)>? subGroups, }) { return FormGroupStructure( id: id ?? this.id, fields: fields ?? this.fields, values: values ?? this.values, + preFields: preFields ?? this.preFields, + preValues: preValues ?? this.preValues, subGroups: subGroups ?? this.subGroups, ); } @@ -33,6 +41,8 @@ class FormGroupStructure { 'id': id, 'fields': fields, 'values': values, + 'preFields': preFields, + 'preValues': preValues, 'subGroups': subGroups?.map(((int initialCount, FormGroupStructure structure) x) => {'structure': x.$2.toMap(), 'initialCount': x.$1}).toList(), }; } @@ -42,6 +52,8 @@ class FormGroupStructure { id: map['id'] as String, fields: List.from(map['fields'] as List), values: map['values'] != null ? List.from(map['values'] as List) : null, + preFields: map['preFields'] != null ? map['preFields'] as Map : null, + preValues: map['preValues'] != null ? map['preValues'] as Map: null, subGroups: map['subGroups'] != null ? (map['subGroups'] as List>).map((Map map) => (int.tryParse(map['initialCount']) ?? 0, FormGroupStructure.fromMap(map['structure']))).toList() : null, @@ -54,18 +66,23 @@ class FormGroupStructure { @override String toString() { - return 'FormGroupStructure(id: $id, fields: $fields, values: $values, subGroups: $subGroups)'; + return 'FormGroupStructure(id: $id, fields: $fields, values: $values, preFields: $preFields, preValues: $preValues, subGroups: $subGroups)'; } @override bool operator ==(covariant FormGroupStructure other) { if (identical(this, other)) return true; - return other.id == id && listEquals(other.fields, fields) && listEquals(other.values, values) && listEquals(other.subGroups, subGroups); + return other.id == id && + listEquals(other.fields, fields) && + listEquals(other.values, values) && + mapEquals(other.preFields, preFields) && + mapEquals(other.preValues, preValues) && + listEquals(other.subGroups, subGroups); } @override int get hashCode { - return id.hashCode ^ fields.hashCode ^ values.hashCode ^ subGroups.hashCode; + return id.hashCode ^ fields.hashCode ^ values.hashCode ^ preFields.hashCode ^ preValues.hashCode ^ subGroups.hashCode; } }