ensureTextFieldStateBinding method

void ensureTextFieldStateBinding({
  1. required String page,
  2. required BrownfieldPatternTarget field,
  3. required String stateField,
  4. FFActionTriggerType triggerType = FFActionTriggerType.ON_TEXTFIELD_CHANGE,
  5. List<DslAction> afterSetState = const <DslAction>[],
})

Wires an existing text field to a page state field.

This helper assumes the target resolves to a single existing TextField and that the destination state field is a non-list string field.

Example:

app.ensureTextFieldStateBinding(
  page: 'TaskListPage',
  field: BrownfieldPatternTarget.singleExistingTextField(),
  stateField: 'searchQuery',
);

Implementation

void ensureTextFieldStateBinding({
  required String page,
  required BrownfieldPatternTarget field,
  required String stateField,
  FFActionTriggerType triggerType = FFActionTriggerType.ON_TEXTFIELD_CHANGE,
  List<DslAction> afterSetState = const <DslAction>[],
}) {
  raw((project) {
    final editor = _pagePatternEditor(page);
    final pageSnapshot = _requirePagePatternSnapshot(project, page);
    _validateStateFieldType(
      project,
      widgetClassName: page,
      fieldName: stateField,
      expectedScalarType: FFBaseDataType.String,
      operation: 'ensureTextFieldStateBinding',
    );

    final fieldRef = _resolveTypedPatternTarget(
      pageSnapshot,
      editor,
      field,
      operation: 'ensureTextFieldStateBinding(field: ...)',
      allowedTypes: {FFWidgetType.TextField.name},
    );
    editor.ensureActions(
      _selectionForResolvedTarget(editor, fieldRef),
      triggerType: triggerType,
      actions: [SetState(stateField, TextValue()), ...afterSetState],
    );
    _applyBrownfieldWidgetClassEdit(project, editor);
  });
}