ControlledChipInput<T> constructor

const ControlledChipInput<T>({
  1. Key? key,
  2. ChipInputController<T>? controller,
  3. List<T> initialValue = const [],
  4. ValueChanged<List<T>>? onChanged,
  5. bool enabled = true,
  6. TextEditingController? textEditingController,
  7. BoxConstraints? popoverConstraints,
  8. UndoHistoryController? undoHistoryController,
  9. ValueChanged<String>? onSubmitted,
  10. String? initialText,
  11. FocusNode? focusNode,
  12. List<T> suggestions = const [],
  13. List<T> chips = const [],
  14. List<TextInputFormatter>? inputFormatters,
  15. void onSuggestionChoosen(
    1. int index
    )?,
  16. required ChipWidgetBuilder<T> chipBuilder,
  17. ChipWidgetBuilder<T>? suggestionBuilder,
  18. bool? useChips,
  19. TextInputAction? textInputAction,
  20. Widget? placeholder,
  21. Widget suggestionLeadingBuilder(
    1. BuildContext,
    2. T
    )?,
  22. Widget suggestionTrailingBuilder(
    1. BuildContext,
    2. T
    )?,
  23. Widget? inputTrailingWidget,
})

Creates a ControlledChipInput with comprehensive customization options.

The chipBuilder parameter is required as it defines how chips are visually represented. Either controller or onChanged should be provided for interactivity, depending on the preferred state management approach.

Parameters:

  • controller (ChipInputController
  • initialValue (List
  • onChanged (ValueChanged<List
  • enabled (bool, default: true): whether input is interactive
  • chipBuilder (ChipWidgetBuilder
  • suggestions (List
  • suggestionBuilder (ChipWidgetBuilder
  • useChips (bool?, optional): override chip rendering mode
  • placeholder (Widget?, optional): empty state placeholder widget
  • undoHistoryController (UndoHistoryController?, optional): undo/redo controller for text input
  • onSubmitted (ValueChanged
  • initialText (String?, optional): initial text value for input field
  • focusNode (FocusNode?, optional): focus node for input field
  • inputFormatters (List
  • textInputAction (TextInputAction?, optional): keyboard action button
  • suggestionLeadingBuilder (Widget Function(BuildContext, T)?, optional): leading widget builder for suggestions
  • suggestionTrailingBuilder (Widget Function(BuildContext, T)?, optional): trailing widget builder for suggestions
  • inputTrailingWidget (Widget?, optional): trailing widget for input field

Example:

ControlledChipInput<String>(
  controller: controller,
  chipBuilder: (context, chip) => Chip(
    label: Text(chip),
    onDeleted: () => controller.remove(chip),
  ),
  suggestions: ['apple', 'banana', 'cherry'],
  placeholder: Text('Type to add fruits...'),
  undoHistoryController: myUndoController,
  onSubmitted: (text) => print('Submitted: $text'),
  initialText: 'Start typing...',
  focusNode: myFocusNode,
  inputFormatters: [myFormatter],
  textInputAction: TextInputAction.done,
  suggestionLeadingBuilder: (context, chip) => Icon(Icons.star),
  suggestionTrailingBuilder: (context, chip) => Icon(Icons.close),
  inputTrailingWidget: Icon(Icons.add),
)

Implementation

const ControlledChipInput({
  super.key,
  this.controller,
  this.initialValue = const [],
  this.onChanged,
  this.enabled = true,
  this.textEditingController,
  this.popoverConstraints,
  this.undoHistoryController,
  this.onSubmitted,
  this.initialText,
  this.focusNode,
  this.suggestions = const [],
  this.chips = const [],
  this.inputFormatters,
  this.onSuggestionChoosen,
  required this.chipBuilder,
  this.suggestionBuilder,
  this.useChips,
  this.textInputAction,
  this.placeholder,
  this.suggestionLeadingBuilder,
  this.suggestionTrailingBuilder,
  this.inputTrailingWidget,
});