magicFormEnricher function
Enricher: emits magicFormField: <name> when element is backed by a
TextEditingController owned by a MagicFormData in an ancestor
MagicForm.
Steps:
- Walk descendants for an EditableText and capture its controller.
- Walk ancestors for a
MagicFormand read itsMagicFormData. - Linear-scan
MagicFormData.fieldNamesfor a text controller whose identity matches the captured controller; emitmagicFormField: $name.
Returns null when any step fails (no EditableText, no MagicForm
ancestor, no matching field). Never throws, never retains element.
Implementation
String? magicFormEnricher(Element element, RefRegistry refs) {
// 1. Find the EditableText controller this element backs (or descends to).
final TextEditingController? controller = _findEditableController(element);
if (controller == null) return null;
// 2. Walk ancestors for the nearest MagicForm.
final MagicFormData? formData = _findAncestorFormData(element);
if (formData == null) return null;
// 3. Identity-compare against each text field's controller.
for (final String name in formData.fieldNames) {
final TextEditingController fieldController = _tryReadText(formData, name);
if (identical(fieldController, controller)) {
return 'magicFormField: $name';
}
}
return null;
}