BeuiSelect class

A dropdown select whose panel unfolds out of the trigger — the Flutter port of beUI's select (the gooey/accordion variant), built on BeuiOverlay and anchored to the trigger with a LayerLink + CompositedTransformFollower, the same overlay pattern as BeuiTooltip.

Open choreography (mirrors the source's per-channel transitions): the panel starts flush against the trigger (gap 0, near corners square) then separates — its height springs open on _heightSpring (duration 0.42, bounce 0.14), a gap springs apart on the bouncy _gapSpring (0.6/0.5), and the corners facing the trigger round from 0→12 while the far corners stay rounded. Options stagger in (source staggerChildren 0.035, delayChildren 0.05), each rising 6px through a blur(3px)→0 opacity fade. The chevron rotates 180° on _chevronSpring, and the trigger edge facing the panel stays flat then rounds back up on open (source [0,0,12]) and pinches on close ([12,0,12]). The panel flips above the trigger when there isn't room below. Each channel springs on enter (via from: 0, like the tooltip) and eases forward to its collapse on exit — the exit is not a time-reversed entrance.

Controlled or uncontrolled: pass value + onChanged to control it, or omit value and seed defaultValue for internal state. Keyboard: Enter / Space / ArrowDown open it; Up/Down move the highlight; Enter commits; Esc closes. Reduced motion keeps a quick height + opacity reveal but drops the gap, the corner pinch and the per-option movement (options fade only).

Inheritance

Constructors

BeuiSelect({required List<BeuiSelectOption> options, String? value, String? defaultValue, ValueChanged<String>? onChanged, String placeholder = 'Select', bool enabled = true, Key? key})
Creates a select over options.
const

Properties

defaultValue → String?
Uncontrolled initial value (used only when value is null).
final
enabled → bool
Whether the trigger is interactive.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onChanged → ValueChanged<String>?
Called with the chosen option's value.
final
options → List<BeuiSelectOption>
The options to choose from.
final
placeholder → String
Shown in the trigger until a value is selected.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
value → String?
Controlled selected value. When null the select owns its state.
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<BeuiSelect>
Creates the mutable state for this widget at a given location in the tree.
override
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
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
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

Operators

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