body method
Generates a map from the form state, applying any transformations specified by the fieldTransformers method.
This method iterates over all fields in the form state, applies any registered transformers, and returns a map suitable for use as a request body.
It also respects the options:
Returns a Map<String, dynamic> containing the transformed form data.
Implementation
Map<String, dynamic> body() {
final registry = TransformersRegistry();
fieldTransformers(registry);
final raw = <String, dynamic>{};
// Iterate through each field in the fields map
state.fields.forEach((fieldName, fieldState) {
// Skip ignored fields
if (ignoredBodyKeys.contains(fieldName)) return;
final fieldValue = fieldState.value;
final transformed = registry.transform(fieldValue, fieldKey: fieldName);
final value = transformed ?? fieldValue;
// Skip empty/null values if enabled
if (ignoreEmptyValues &&
(value == null || (value is String && value.trim().isEmpty)) ||
(value is List && value.isEmpty) ||
(value is Set && value.isEmpty)) {
return;
}
// Determine final key
final key = remapKeys[fieldName] ?? fieldName;
// Support nested merging of transformer output
if (mergeNestedMaps && value is Map<String, dynamic>) {
raw.addAll(value);
} else {
raw[key] = value;
}
});
return postProcessBody(raw);
}