Published 2026-10-30
Wrapper widgets around the shadcn_flutter component library, which is a set of widgets and utilities for building applications in flutter. It is a port of the shadcn UI package to flutter.
This package should make it easier to move away from the overly complicated flutter material widgets, both for styling and functionality.
The term "shadcn" does not stand for an acronym or specific phrase; rather, it is the online alias of the creator behind the popular UI component project shadcn/ui. The project is named after its author, who goes by "shadcn" on platforms like GitHub and Twitter.


hh generate), where each widget is prefixed with HH as a Typedef.pkg_widgets_shadcn_wrappers and pkg_widgets_shadcn_examples).pkg_widgets_shadcn package.HHScrollbar was completely refactored from a simple StatelessWidget theme wrapper to a StatefulWidget with a custom overlay scrollbar. It now features a draggable thumb, hover-based opacity fading (with a 2-second delay before dimming), and track tap/drag interactions. The child is constrained to exclude the scrollbar's right-edge area so it never competes for pointer events with the thumb. Properties interactive, trackVisibility, and scrollbarOrientation are kept for API compatibility but are functionally ignored.HHSecondaryBadge measurement badge was rendered visibly in the widget tree instead of being offstage — wrapped in Offstage so only the sized SecondaryBadge paints.HHSecondaryBadge ValueNotifier was never disposed, causing a memory leak — added dispose() override.HHLocaleModel _currencyFormatter could throw a LateError if accessed before initLocale() completed — made nullable with a lazy default fallback.HHApp now passes theme, darkTheme, and themeMode to ShadcnApp so the framework correctly switches between light and dark themes.HHAppBarThemeModifier now applies custom app bar styling in both light and dark modes (previously skipped dark mode).HHAppBarThemeModifier text colors now use colorScheme.primaryForeground and colorScheme.foreground instead of hard-coded colors, ensuring readability in both light and dark modes.HHColorSchemes dark-mode popup and card surfaces are slightly lightened so they stand out from the page background.HHColorSchemes dark-mode borders and input colors are slightly lightened so they stand out more against dark backgrounds.primaryForeground color was incorrect (nearly identical to primary), making text on app bars and tabs unreadable — fixed to use a light color.HHPlaceholder alias and widget mapping for the Placeholder shadcn widget.tool/lint_text_style_getters.dart to enforce the updated text-style getter pattern.small, muted, mono, normal).HHTabs content styling to match the newer text-style behavior.>=3.47.7 in both the package and example app manifests.HHPlaceholder.appSubtitleSupportingEs6consoleLabelconsoleLiveLabeldebuggerTabBreakpointsdebuggerTabVariablesmodifiedFileBeforeExitMessagemodifiedFilesBeforeExitMessagenoFileSelectedMessageopenJavaScriptFileDialogTitlepauseActionresumeActionsaveChangesBeforeClosingTitlesaveChangesBeforeExitTitlesaveJavaScriptFileDialogTitlestepIntoActionstepOutActionstepOverActionunsavedChangesBeforeClosingMessageunsavedFileLabelfeatureSortByAlgemeenAndFiliaalSpecifiekHHTextExample: added .mono.xSmall text variant sample.HHLogViewerExample: wrapped with local Theme override and scaled typography (0.75) to improve example readability.example/lib/src/generated/examples.dart to reflect the updated examples.HHIcons.debugStepInto, HHIcons.debugStepOut, and HHIcons.debugStepOver enum values.HHIcon.HHIcons.stop and HHUiText.stop, replacing the old quit localization entry.editPicklistText.DA, HEMA, HuigHaverlag, and Keurslager.DesktopEditableTextContextMenu from crashing with Null check operator used on a null value by ensuring context menus are built under a valid localization scope via Localizations.override(...) in:
HHTextInputHHNumberInputHHTextFieldHHSingleLineTextInputHHCodeSnippetHHApp (non-router branch): include ShadcnLocalizations.localizationsDelegates so Shadcn locale lookups are available consistently across app entry modes.HHPubDevVersion Show error when pub.dev.version could not be retrieved.file_picker dependency.HHBlinkText: removed redundant setState call in animation status listener.HHDelayedBuilder: added mounted and null-context guards before completing the future.HHScrollContainerV1 / HHScrollContainerV2: guard jumpTo calls with hasClients check to prevent errors when the controller has no attached scroll views.HHCodeSnippet: return the real Future from _initializedLanguages instead of an immediately-resolved value, so callers properly wait for Highlighter.initialize to complete.HHPubDevVersion: added _initialized flag to skip the pub.dev fetch on the first didChangeDependencies call (prevents a double-fetch on widget mount).CrossScroll (third-party): corrected || → && in horizontal/vertical thumb bounds check (logic bug that caused incorrect scroll-thumb clamping).HHLogViewer: updated GlobalKey type from HHScrollContainerV1State to HHScrollContainerState.HHLogViewerModel: replace where(…).isNotEmpty with any(…) for hasErrors/hasWarnings; replace forEach with for loops in add and clear.test/src/).SKILL.md.shared_preferences_platform_interface: ^2.4.0 development dependency.unwrapped components for unhandled material elements.widget_mappings map from lint_widget_mappings.dart file to allow global use outside of this package.HHFormFieldModel.vertical.HHFormFieldModel.spacing.AppBar now has centerTitle set to false because on macOS it defaults to center and all other platforms to start. This causes various layout issues.HHInputFeatureGeneratePassword.HHControlledChipInput.HHTextAreaTheme.HHIcons.offsetLeft, HHIcons.offsetTop.pkg_mime_info dependency.HHMinSizeContainer, application wrapper to maintain a minimum application window size.HHScrollContainerV2, uses CrossScroll, use typedef HHScrollContainer.HHConditionalSwitcher.CrossScroll, internal, (third party, heavily modified).HHDialog.withAnimation now defaults to false to prevent too much screen updates when the dialog must be refreshed to show progress updates.