This commit is contained in:
2025-04-08 15:20:52 +02:00
parent ab20b9d5a4
commit a287f4cf85

View File

@@ -315,52 +315,53 @@ class AstromicFormController extends FormController {
// } // }
void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) { void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) {
assert(groupStructure.fields.isNotEmpty, '${groupStructure.id}: Group fields should NOT be empty.'); assert(groupStructure.fields.isNotEmpty, '${groupStructure.id}: Group fields should NOT be empty.');
// Validate subgroups (if any) // Validate subgroups (if any)
_validateSubGroups(groupStructure); _validateSubGroups(groupStructure);
// Add structure to registry // Add structure to registry
_formGroups.add(groupStructure); _formGroups.add(groupStructure);
// Initialize the group instances // Initialize the group instances
_initializeGroupControllers(groupStructure, initialCount); _initializeGroupControllers(groupStructure, initialCount);
} }
/// Recursively initialize controllers for the group and its subgroups /// Recursively initialize controllers for the group and its subgroups
void _initializeGroupControllers(FormGroupStructure groupStructure, int initialCount, {String parentPrefix = ''}) { void _initializeGroupControllers(FormGroupStructure groupStructure, int initialCount, {String parentPrefix = ''}) {
// Add main group fields/values // Add main group fields/values
for (int groupIndex = 0; groupIndex < initialCount; groupIndex++) { for (int groupIndex = 0; groupIndex < initialCount; groupIndex++) {
_addGroupControllers(groupStructure, groupIndex, parentPrefix: parentPrefix); _addGroupControllers(groupStructure, groupIndex, parentPrefix: parentPrefix);
// Recursively handle subgroups // Recursively handle subgroups
if (groupStructure.subGroups != null && groupStructure.subGroups!.isNotEmpty) { if (groupStructure.subGroups != null && groupStructure.subGroups!.isNotEmpty) {
for (final (FormGroupStructure subGroup, int subgroupInitialCount) in groupStructure.subGroups!) { for (final (FormGroupStructure subGroup, int subgroupInitialCount) in groupStructure.subGroups!) {
final String nestedPrefix = parentPrefix.isEmpty final String subgroupPrefix = parentPrefix.isEmpty
? standeredGroupFormat(groupStructure.id, groupIndex, subGroup.id) // If no parentPrefix, use the group directly ? standeredGroupFormat(groupStructure.id, groupIndex, subGroup.id)
: '$parentPrefix->${standeredGroupFormat(groupStructure.id, groupIndex, subGroup.id)}'; // Add to parentPrefix : '$parentPrefix->${standeredGroupFormat(groupStructure.id, groupIndex, subGroup.id)}'; // Add to parentPrefix only once
// Initialize subgroup controllers recursively // Initialize subgroup controllers recursively
for (int subIndex = 0; subIndex < subgroupInitialCount; subIndex++) { for (int subIndex = 0; subIndex < subgroupInitialCount; subIndex++) {
_initializeGroupControllers(subGroup, subgroupInitialCount, parentPrefix: nestedPrefix); _initializeGroupControllers(subGroup, subgroupInitialCount, parentPrefix: subgroupPrefix);
}
} }
} }
} }
} }
}
/// Validate subgroups recursively /// Validate subgroups recursively
void _validateSubGroups(FormGroupStructure groupStructure) { void _validateSubGroups(FormGroupStructure groupStructure) {
groupStructure.subGroups?.forEach((subGroupTuple) { groupStructure.subGroups?.forEach((subGroupTuple) {
final subGroup = subGroupTuple.$1; final subGroup = subGroupTuple.$1;
assert(subGroup.fields.isNotEmpty, '${subGroup.id}: Subgroup fields should NOT be empty.'); assert(subGroup.fields.isNotEmpty, '${subGroup.id}: Subgroup fields should NOT be empty.');
// Recursively validate subgroups of subgroups
if (subGroup.subGroups != null) {
_validateSubGroups(subGroup);
}
});
}
// Recursively validate subgroups of subgroups
if (subGroup.subGroups != null) {
_validateSubGroups(subGroup);
}
});
}
// void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) { // void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) {
// assert(groupStructure.fields.isNotEmpty, '$groupStructure: Group Fields should NOT be empty.'); // assert(groupStructure.fields.isNotEmpty, '$groupStructure: Group Fields should NOT be empty.');