naked_ui 1.0.0-beta.9
naked_ui: ^1.0.0-beta.9 copied to clipboard
A library of behavior-first UI components for Flutter that separate state from presentation.
1.0.0-beta.9 #
Fixes #
- Keep
NakedTextField'sWidgetState.pressed,onTapChange, andonPressChangesynchronized when selection gestures take over; block disabled pointer and selection paths, and defer lifecycle cleanup callbacks to avoid rebuilding while the widget tree is locked. - Mark
NakedToggleOptionsemantics as part of a mutually exclusive group, matching Flutter's segmented-control contract for enabled, selected, and disabled options.
1.0.0-beta.8 #
Fixes #
- Preserve tooltip overlay semantics when
semanticLabelis absent or blank, while continuing to avoid duplicate announcements when a non-empty label represents the content on the trigger. Explicit semantics overrides remain authoritative.
1.0.0-beta.7 #
Features #
- Add
NakedSliderState.visualPercentageOffor mapping arbitrary logical fractions to physical track alignment across orientation, text direction, and inversion, while preservingvisualPercentageAtthumb placement.
1.0.0-beta.6 #
Fixes #
- Make
NakedTextFieldhonor ambientDefaultSelectionStylecursor and selection colors, including context-resolvedCupertinoDynamicColorvariants, while preserving explicit cursor precedence, focus gating, and platform fallbacks.
Maintenance #
- Point package metadata at the canonical
conceptadev/naked_uirepository.
1.0.0-beta.5 #
Breaking changes #
- Replace alignment-pair overlay positioning with a Radix-shaped
OverlayPositionConfig: side, logical alignment, signed side/alignment offsets, collision padding, collision avoidance, and a resolvedOverlayPlacementavailable to overlay descendants after flip or shift. - Change
NakedSliderfrom onedouble valueto a nonempty, orderedList<double> values. Callbacks are list-valued; defaults are nowmin=0,max=100, andstep=1. The slider supports arbitrary thumb counts, orientation, inversion, minimum spacing, nearest-thumb pointer selection, non-crossing constraints, and per-thumb focus, labels, formatters, and semantics actions.
Features and behavior changes #
- Add controlled
open/onOpenChangedcontracts to Select and Tooltip. Controlled owners may accept or reject trigger, selection, Escape, outside tap, hover, focus, and touch requests without transient visual mutation. - Keep Tooltip open while either its trigger or overlay content is hovered,
with an opt-out through
disableHoverableContent; expose the final collision-resolved placement to tooltip content. - Add separate keyed Popover anchors and automatic/manual Tabs activation.
- Add controlled menu checkbox items and typed radio groups/items with checked roles and mutually-exclusive semantics.
- Add recursively composable submenus with delayed hover handoff, LTR/RTL open/close arrows, Escape handling, sibling coordination, root dismissal, first-item focus, and trigger-focus restoration.
1.0.0-beta.4 #
Features #
- Add
SemanticsRole.alertDialogsupport toNakedDialogand ashowNakedAlertDialoghelper with required non-empty caller-localized names, a non-dismissible outside barrier by default, null cancellation from Escape and platform Back, mandatory focus entry, safe initial-focus selection, closed-loop traversal, and caller-owned focus-node handling. Dismissible barriers require a non-empty localized label. ExistingNakedDialogandshowNakedDialogdefaults remain unchanged.
Behavior changes #
- Migrate
NakedToggleGroupoptions from independent Tab stops to one roving-focus stop: Tab enters and exits once, arrows and Home/End move focus without selecting, activation proposes the controlled value, and disabled or dynamically removed options repair focus within the group.
1.0.0-beta.3 #
Fixes and hardening #
- Scope overlay-item builders to their declared state type:
NakedMenuItemandNakedSelectOptionbuilders now receive a context containing a matchingNakedStateScope<S>, soNakedMenuItemState/NakedSelectOptionState'sof/controllerOfhelpers resolve to the item state. Downstream code no longer needsNakedButtonState, which leaked the internal button implementation.
1.0.0-beta.2 #
Breaking changes #
- Require Dart 3.9 and Flutter 3.41, matching the
RawTooltipAPI used by the package. - Treat
NakedSelect.valueas fully controlled, includingnull; a select withoutonChangedis now consistently non-interactive. - Make
NakedAccordionController.valuesimmutable to callers and preserve its observable FIFO ordering. - Make
NakedStateScope.controllerOftype-specific; generic state helpers now require the requested value type. - Require
NakedMenuto have either achildorbuilder, and throw a descriptive error when menu/select items are used outside their owner.
Fixes and hardening #
- Rebuild controller-driven tabs, prevent duplicate tab selection callbacks,
replace duplicated content semantics when
semanticLabelis set, and keep orientation-aware Home/End navigation within each tab bar. - Apply dialog, tab, menu, and menu-item semantic roles, including selected state for select options.
- Correct focus-node ownership swaps across controls and remove the redundant
focus owner around
EditableText. - Consolidate overlay positioning, including safe handling of oversized content, and rebuild Popover on the shared anchored-overlay shell.
- Keep inherited callbacks current, initialize replacement accordion controllers, and scope slider drag-end values to each drag session.
- Correct example paths in CI workflows and remove redundant dependency steps.
1.0.0-beta.1 #
- feat(naked-select): add
mouseCursorproperty to NakedSelect - refactor(naked-tooltip): replace
RawMenuAnchorwithRawTooltip - fix: stabilize flaky tests (InkSparkle shader + focus mode)
0.2.0-beta.7 #
- fix: text style handling in NakedTextField
- feat: improve 3.27-safe semantics for menu, select, accordion, checkbox, radio, slider, and text field
0.2.0-beta.6 #
- fix: disabled and error state support for NakedTextField
0.2.0-beta.5 #
- fix: NakedAccordionItemState scope on content
- refactor: remove NakedMenuController typedef
0.2.0-beta.4 #
- docs: refine documentation for developer clarity
- refactor: Simplify NakedTextFieldBuilder signature
- feat: add excludeSemantics parameter to all widgets
0.2.0-beta.3 #
- feat: expose StrutStyle to NakedTextField
- fix: state scope not in the Context
- feat: recreate NakedTooltip widget
- refactor: Overlay Rendering
- docs: Improve the usage examples
0.2.0-beta.2 #
0.2.0-beta.1 #
-
Added: Popover; Toggle
-
API: Standardized state callbacks (onHoverChange/onPressChange/onFocusChange); removed onDisabledState (use enabled); added onSelectChange/onDragChange where applicable
-
Better use of Raw Flutter components where available
-
Accessibility: Improved semantics across button, checkbox, radio, slider, select, tabs, dialog, tooltip
-
Focus/State: Unified focus handling (FocusNodeMixin) and consistent hover/press/selected for builders
-
Architecture: Builder-first APIs (e.g., NakedTextField builder) with state provided via NakedStateScope
0.0.1-dev.2 - 2025-07-03 #
Features #
- "Naked" - A Behavior-First UI Component Library for Flutter (#579) (c55b55f)
- Add maybeOf helper to InheritedWidgets and refactor of() (805a37e)
- Add maybeOf helper to InheritedWidgets and refactor of() (805a37e)
- Add test for Hover to RadioButton (#601) (8bd0425)
- Add textStyle prop in NakedTextField (#608) (4b5252b)
- Implement Tooltip Lifecycle (#603) (2ddbf60)
- Recreate Button using Naked (#587) (0d55724)
- Refactor radio and checkbox components with new architecture (#672) (4f3ce7d)
Bug Fixes #
Miscellaneous Chores #
0.0.1-dev.0 #
- Initial development release
- Core functionality for HeadlessButton component
- State management via HeadlessInteractiveStateController
- Support for interactive states (disabled, focused, hovered, pressed)
- Fully customizable rendering via builder pattern