ensureTextFieldStateBinding method
void
ensureTextFieldStateBinding({
- required String page,
- required BrownfieldPatternTarget field,
- required String stateField,
- FFActionTriggerType triggerType = FFActionTriggerType.ON_TEXTFIELD_CHANGE,
- 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);
});
}