ControlledChipInput<T> class

Reactive chip input with automatic state management and controller support.

A high-level chip input widget that provides automatic state management through the controlled component pattern. Supports both controller-based and callback-based state management with comprehensive customization options for chips, suggestions, and input behavior.

Features

  • Flexible chip rendering: Custom chip builders for complete visual control
  • Autocomplete suggestions: Real-time suggestions with customizable presentation
  • Multiple input modes: Text tokenization or chip-based entry
  • Form integration: Automatic validation and form field registration
  • Keyboard navigation: Full keyboard support for selection and deletion

Usage Patterns

Controller-based (recommended for complex state):

final controller = ChipInputController<String>(['apple', 'banana']);

ControlledChipInput<String>(
  controller: controller,
  chipBuilder: (context, chip) => Chip(label: Text(chip)),
  suggestions: ['orange', 'grape', 'mango'],
)

Callback-based (simple state management):

List<String> selectedItems = [];

ControlledChipInput<String>(
  initialValue: selectedItems,
  onChanged: (items) => setState(() => selectedItems = items),
  chipBuilder: (context, chip) => CustomChipWidget(chip),
)
Inheritance
Mixed-in types
Available extensions

Constructors

ControlledChipInput.new({Key? key, ChipInputController<T>? controller, List<T> initialValue = const [], ValueChanged<List<T>>? onChanged, bool enabled = true, TextEditingController? textEditingController, BoxConstraints? popoverConstraints, UndoHistoryController? undoHistoryController, ValueChanged<String>? onSubmitted, String? initialText, FocusNode? focusNode, List<T> suggestions = const [], List<T> chips = const [], List<TextInputFormatter>? inputFormatters, void onSuggestionChoosen(int index)?, required ChipWidgetBuilder<T> chipBuilder, ChipWidgetBuilder<T>? suggestionBuilder, bool? useChips, TextInputAction? textInputAction, Widget? placeholder, Widget suggestionLeadingBuilder(BuildContext, T)?, Widget suggestionTrailingBuilder(BuildContext, T)?, Widget? inputTrailingWidget})
Creates a ControlledChipInput with comprehensive customization options.
const

Properties

asBuilder NeverWidgetBuilder

Available on Widget, provided by the WidgetExtension extension

no setter
asSliver Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
base TextModifier

Available on Widget, provided by the TextExtension extension

no setter
black TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blockQuote TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blurIn Widget

Available on Widget, provided by the XWidgetEffect extension

no setter
bold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
centered Widget

Available on Widget, provided by the XWidget extension

no setter
chipBuilder ChipWidgetBuilder<T>
Builder function for creating chip widget representations.
final
chips List<T>
Current list of selected chips to display.
final
controller ChipInputController<T>?
External controller for programmatic chip list management.
final
ellipsis TextModifier

Available on Widget, provided by the TextExtension extension

no setter
enabled bool
Whether the chip input is interactive and enabled.
final
expand Widget

Available on Widget, provided by the XWidget extension

no setter
extraBold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
extraLight TextModifier

Available on Widget, provided by the TextExtension extension

no setter
firstP TextModifier

Available on Widget, provided by the TextExtension extension

no setter
flexible Widget

Available on Widget, provided by the XWidget extension

no setter
focusNode FocusNode?
Focus node for managing input focus.
final
foreground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h1 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h2 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h3 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h4 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
hashCode int
The hash code for this object.
no setterinherited
ih Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
initialText String?
Initial text value for the input field.
final
initialValue List<T>
Initial chip list when no controller is provided.
final
inlineCode TextModifier

Available on Widget, provided by the TextExtension extension

no setter
inputFormatters List<TextInputFormatter>?
List of input formatters for the text field.
final
inputTrailingWidget Widget?
Widget displayed at the end of the input field.
final
intrinsicHeight Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicSize Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicWidth Widget

Available on Widget, provided by the XWidget extension

no setter
italic TextModifier

Available on Widget, provided by the TextExtension extension

no setter
iw Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
lead TextModifier

Available on Widget, provided by the TextExtension extension

no setter
li TextModifier

Available on Widget, provided by the TextExtension extension

no setter
light TextModifier

Available on Widget, provided by the TextExtension extension

no setter
medium TextModifier

Available on Widget, provided by the TextExtension extension

no setter
modify TextModifier

Available on Widget, provided by the TextExtension extension

no setter
mono TextModifier

Available on Widget, provided by the TextExtension extension

no setter
muted TextModifier

Available on Widget, provided by the TextExtension extension

no setter
normal TextModifier

Available on Widget, provided by the TextExtension extension

no setter
onChanged ValueChanged<List<T>>?
Callback fired when the chip list changes.
final
onSubmitted ValueChanged<String>?
Callback fired when the user submits the input (e.g., presses enter).
final
onSuggestionChoosen → void Function(int index)?
Callback for handling suggestion selection.
final
p TextModifier

Available on Widget, provided by the TextExtension extension

no setter
placeholder Widget?
Widget displayed when no chips are selected and no text is entered.
final
popoverConstraints BoxConstraints?
Constraints applied to the autocomplete suggestion popover.
final
primaryForeground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
safeArea Widget

Available on Widget, provided by the XWidget extension

no setter
sans TextModifier

Available on Widget, provided by the TextExtension extension

no setter
scrollable Widget

Available on Widget, provided by the XWidget extension

no setter
scrollableHorizontal Widget

Available on Widget, provided by the XWidget extension

no setter
secondaryForeground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
semiBold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
singleLine TextModifier

Available on Widget, provided by the TextExtension extension

no setter
small TextModifier

Available on Widget, provided by the TextExtension extension

no setter
suggestionBuilder ChipWidgetBuilder<T>?
Optional builder function for customizing suggestion list items.
final
suggestionLeadingBuilder Widget Function(BuildContext, T)?
Builder for leading widget in suggestion list items.
final
suggestions List<T>
List of available suggestions for autocomplete functionality.
final
suggestionTrailingBuilder Widget Function(BuildContext, T)?
Builder for trailing widget in suggestion list items.
final
textCenter TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textEditingController TextEditingController?
External controller for the underlying text input field.
final
textEnd TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textInputAction TextInputAction?
Text input action for the text field (e.g., done, next).
final
textJustify TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLarge TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLeft TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textMuted TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textRight TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textSmall TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textStart TextModifier

Available on Widget, provided by the TextExtension extension

no setter
thin TextModifier

Available on Widget, provided by the TextExtension extension

no setter
underline TextModifier

Available on Widget, provided by the TextExtension extension

no setter
undoHistoryController UndoHistoryController?
Undo history controller for text input field.
final
useChips bool?
Whether to render selected items as interactive chip widgets.
final
x2Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x3Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x4Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x5Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x6Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x7Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x8Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x9Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xLarge TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xSmall TextModifier

Available on Widget, provided by the TextExtension extension

no setter

Methods

animate({Key? key, List<Effect>? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) Animate

Available on Widget, provided by the AnimateWidgetExtensions extension

Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex. myWidget.animate() is equivalent to Animate(child: myWidget).
asSkeleton({bool enabled = true, bool leaf = false, Widget? replacement, bool unite = false, AsyncSnapshot? snapshot}) Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton with advanced configuration options.
asSkeletonSliver({bool enabled = true}) Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton suitable for sliver layouts.
ast(int ml) Widget

Available on Widget, provided by the XAST extension

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
override
center({Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

clip({Clip clipBehavior = Clip.hardEdge}) Widget

Available on Widget, provided by the WidgetExtension extension

clipOval({Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

clipPath({Clip clipBehavior = Clip.antiAlias, required CustomClipper<Path> clipper}) Widget

Available on Widget, provided by the WidgetExtension extension

clipRRect({BorderRadiusGeometry borderRadius = BorderRadius.zero, Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

constrained({double? minWidth, double? maxWidth, double? minHeight, double? maxHeight, double? width, double? height}) Widget

Available on Widget, provided by the WidgetExtension extension

createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugContainer([Color color = Colors.red]) Widget

Available on Widget, provided by the DebugContainer extension

debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
excludeSkeleton({bool exclude = true}) Widget

Available on Widget, provided by the SkeletonExtension extension

Controls whether the widget should be preserved in skeleton mode.
expanded({int flex = 1}) Widget

Available on Widget, provided by the WidgetExtension extension

iconDestructiveForeground() Widget

Available on Widget, provided by the IconExtension extension

iconLarge() Widget

Available on Widget, provided by the IconExtension extension

iconMedium() Widget

Available on Widget, provided by the IconExtension extension

iconMutedForeground() Widget

Available on Widget, provided by the IconExtension extension

iconPrimary() Widget

Available on Widget, provided by the IconExtension extension

iconPrimaryForeground() Widget

Available on Widget, provided by the IconExtension extension

iconSecondary() Widget

Available on Widget, provided by the IconExtension extension

iconSecondaryForeground() Widget

Available on Widget, provided by the IconExtension extension

iconSmall() Widget

Available on Widget, provided by the IconExtension extension

iconX2Large() Widget

Available on Widget, provided by the IconExtension extension

iconX2Small() Widget

Available on Widget, provided by the IconExtension extension

iconX3Large() Widget

Available on Widget, provided by the IconExtension extension

iconX3Small() Widget

Available on Widget, provided by the IconExtension extension

iconX4Large() Widget

Available on Widget, provided by the IconExtension extension

iconX4Small() Widget

Available on Widget, provided by the IconExtension extension

iconXLarge() Widget

Available on Widget, provided by the IconExtension extension

iconXSmall() Widget

Available on Widget, provided by the IconExtension extension

ignoreSkeleton() Widget

Available on Widget, provided by the SkeletonExtension extension

Excludes the widget from skeleton effects in its parent skeleton context.
intrinsic({double? stepWidth, double? stepHeight}) Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicHeight() Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicWidth({double? stepWidth, double? stepHeight}) Widget

Available on Widget, provided by the WidgetExtension extension

isSliver(BuildContext context) bool

Available on Widget, provided by the XSliverWidget extension

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onDoublePressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for double press/tap gestures to this widget in Arcane UI.
onHover(void action(bool hovering)) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for hover events to this widget in Arcane UI.
onLongPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the primary button to this widget in Arcane UI.
onLongSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the secondary button to this widget in Arcane UI.
onLongTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the tertiary button to this widget in Arcane UI.
onPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for primary press/tap gestures to this widget in Arcane UI.
onSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for secondary press gestures (right-click) to this widget in Arcane UI.
onTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for tertiary press gestures (middle-click) to this widget in Arcane UI.
pad(double all) Widget

Available on Widget, provided by the XWidget extension

padBottom(double value) Widget

Available on Widget, provided by the XWidget extension

padBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) Widget

Available on Widget, provided by the XWidgetArcane extension

padHorizontal(double value) Widget

Available on Widget, provided by the XWidgetArcane extension

padLeft(double value) Widget

Available on Widget, provided by the XWidget extension

padOnly({double left = 0, double top = 0, double right = 0, double bottom = 0}) Widget

Available on Widget, provided by the XWidget extension

padRight(double value) Widget

Available on Widget, provided by the XWidget extension

padSliverBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) Widget

Available on Widget, provided by the XWidgetArcane extension

padSliverHorizontal(double value) Widget

Available on Widget, provided by the XWidgetArcane extension

padTop(double value) Widget

Available on Widget, provided by the XWidget extension

positioned({Key? key, double? left, double? top, double? right, double? bottom}) Widget

Available on Widget, provided by the WidgetExtension extension

shadeEdge(double radius) Widget

Available on Widget, provided by the XWidgetEdge extension

shadeFrost(double value) Widget

Available on Widget, provided by the XWidgetFrost extension

shadeInvert() Widget

Available on Widget, provided by the XWidgetInvert extension

shadePixelate(double radius) Widget

Available on Widget, provided by the XWidgetPixelate extension

shadePixelateBlur({int samples = 4, double pixelSize = 8, double radius = 2}) Widget

Available on Widget, provided by the XWidgetPixelateBlur extension

shadeRGB({double radius = 5, double spin = 1}) Widget

Available on Widget, provided by the XWidgetRGB extension

shadeWarp({double amplitude = 1, double frequency = 1, double z = 1, int octaves = 2}) Widget

Available on Widget, provided by the XWidgetWarp extension

shadeWarpAnimation({double amplitude = 1, double frequency = 1, double z = 1, double zSpeed = 1, int octaves = 2}) Widget

Available on Widget, provided by the XWidgetWarp extension

shimmer({bool loading = true}) Widget

Available on Widget, provided by the XWidgetArcane extension

sized({double? width, double? height}) Widget

Available on Widget, provided by the WidgetExtension extension

sized({double? width, double? height}) Widget

Available on Widget, provided by the XWidget extension

then(InlineSpan span) Widget

Available on Widget, provided by the TextExtension extension

thenButton({required VoidCallback onPressed, required Widget child}) Widget

Available on Widget, provided by the TextExtension extension

thenInlineCode(String text) Widget

Available on Widget, provided by the TextExtension extension

thenText(String text) Widget

Available on Widget, provided by the TextExtension extension

toBox(BuildContext context, {bool softWarn = true}) Widget

Available on Widget, provided by the XSliverWidget extension

toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toSliver(BuildContext context, {bool fillRemaining = false, bool softWarn = true}) Widget

Available on Widget, provided by the XSliverWidget extension

toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited
transform({Key? key, required Matrix4 transform}) Widget

Available on Widget, provided by the WidgetExtension extension

withAlign(AlignmentGeometry alignment) Widget

Available on Widget, provided by the WidgetExtension extension

withMargin({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all}) Widget

Available on Widget, provided by the WidgetExtension extension

withOpacity(double opacity) Widget

Available on Widget, provided by the WidgetExtension extension

withPadding({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all, EdgeInsetsGeometry? padding}) Widget

Available on Widget, provided by the WidgetExtension extension

withTooltip(String tooltip) Widget

Available on Widget, provided by the XWidgetArcane extension

Operators

operator ==(Object other) bool
The equality operator.
inherited