Skip to content
CAI
Software that uses CAICheck a score

bdlukaa/fluent_ui

65.7

Adequate · 23 September 2026

51.8k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Flutter library implementing the Windows Fluent UI design language, providing a comprehensive suite of native-styled widgets for building cross-platform desktop and web applications. It exposes a full component set including navigation, forms, inputs, pickers, and surfaces, supported by a robust theming system, localization, and platform-specific asset generation. The repository also includes a detailed example application that demonstrates these capabilities across Windows, macOS, Linux, and Web platforms.

How it got here

2020 — Fluent UI library initialization and feature expansion

10 changes.

This period marks the initial scaffolding and comprehensive feature development of the fluent\_ui library, establishing its core architecture, theming system, and extensive component suite. The work includes restructuring the library entry point, integrating modern Flutter routing, and adding a wide array of Fluent Design controls, surfaces, and utilities. An example application was also created to demonstrate the library's capabilities across multiple platforms.

2021–2022 — Fluent UI component expansion and platform support

21 changes.

This period focused on significantly expanding the Fluent UI library with new form, picker, and navigation controls, alongside comprehensive localization support. The example application was substantially enhanced to demonstrate these components across Windows and macOS platforms, featuring detailed theming, input, and surface demonstrations.

2023–2025 — Fluent UI control expansion

8 changes.

This period focused on implementing a comprehensive suite of new Fluent UI controls, including flyouts, buttons, layout widgets, and pickers, to align with Windows design standards. The work also involved establishing a unified flyout architecture, adding Linux desktop support to the example app, and introducing tooling for Windows icon generation.

Features

Add BreadcrumbBar and TreeView navigation controls

Introduces two new navigation components: BreadcrumbBar, which displays a horizontal path of items with configurable chevron icons, alignment, and overflow handling, and TreeView, a hierarchical list supporting single/multiple selection, programmatic reordering via TreeViewController, lazy loading, and custom gestures.

lib/src/controls/navigation · high confidence

Add CalendarView, CalendarDatePicker, DatePicker, and TimePicker controls

This change introduces a new set of date and time selection controls to the library. It adds the \CalendarView\ widget, which allows users to browse and select dates in month, year, or decade views with support for single, range, and multiple selection modes, as well as customizable blackout rules. Alongside this, the \CalendarDatePicker\ provides a compact, flyout-based interface for selecting a single date from the calendar view. The \DatePicker\ and \TimePicker\ widgets are also added, offering field-based interfaces for selecting dates (with configurable month, day, and year fields) and times (with support for 12/24-hour formats and minute increments), respectively. These controls are implemented in \lib/src/controls/pickers/\ and include supporting utilities for styling and navigation.

lib/src/controls/pickers · high confidence

Add ColorPicker control with ring/box spectrum and named color support

Users can now select colors using a new ColorPicker widget that supports both ring-shaped and box-shaped color spectra, along with RGB, HSV, and hex input fields. The picker includes a predefined set of 138 named colors (matching Windows UI standards) for quick selection, and allows customization of orientation, visibility of preview/sliders/inputs, and alpha channel support.

_lib/src/controls/pickers/color\picker · high confidence

Add Linux desktop support to the example app

The example application now includes the necessary source files and build configuration to run on Linux. This change adds a CMake build system (CMakeLists.txt) that links against GTK 3 and the Flutter Linux embedding, along with native C++ entry points (main.cc, my\_application.cc) that initialize the GTK application window and register Flutter plugins. Users can now build and run the example on Linux desktop environments.

example/linux · high confidence

Add Windows icon generation tool and data

Added a new Dart script in bin/windows\_icons/generator.dart that parses a markdown index of Segoe Fluent icons into a structured JSON file (segoeicons.json). This tool extracts glyph names and Unicode values from the source table, enabling automated generation of Windows icon assets.

_bin/windows\icons · high confidence

Add Windows runner implementation to the example app

The example application now includes the native Windows runner code, enabling it to build and run on Windows. This adds the CMake build configuration, the Win32 window management layer (including DPI awareness and dark mode support), and the Flutter window host that initializes the engine and registers plugins.

example/windows/runner · high confidence

Add macOS support to the example project

The example application now includes a complete macOS platform implementation, allowing users to build and run the app on macOS. This change adds the necessary Xcode project structure, including the Runner target, Cocoa menu bar interface, and Swift application entry points (AppDelegate and MainFlutterWindow). It also configures build settings such as app icons, entitlements for sandboxing and network access, and deployment targets, enabling the example to function as a native macOS application.

example/macos · high confidence

Add web splash screen and manifest configuration

The example app now includes a splash screen experience for web users. This is implemented via new \index.html\, \manifest.json\, and splash assets (\splash.js\, \splash.css\) in the \example/web\ directory. The splash screen displays a branded image that is removed once the Flutter web app loads, and the manifest configures the app to run as a standalone PWA with specific icons and theme colors.

example/web · high confidence

Added code generators for Windows icons and theme color resources

New scripts in the \bin/\ directory now automate the generation of Flutter assets: \icon\_generator.dart\ creates a \WindowsIcons\ class with \IconData\ constants and a lookup map from a JSON glyph definition, while \dictionary\_generator.dart\ produces a \ResourceDictionary\ class containing dark and light mode color values parsed from Microsoft UI XAML theme resources. These tools allow developers to regenerate the icon set and color palette whenever the underlying source data is updated.

bin · high confidence

Expanded Forms examples with new controls and configuration options

The example app's forms section now includes dedicated demonstration pages for several new and updated controls. Users can explore the AutoSuggestBox with support for custom types and popup direction configuration, the CalendarView with single/multiple/range selection modes, and the CalendarDatePicker with locale and group label visibility options. New examples are provided for the ColorPicker (featuring spectrum shapes, orientation, and alpha channel controls), the NumberBox (supporting min/max constraints, double values, and mathematical expressions), and the PasswordBox (demonstrating peek, visible, and hidden reveal modes). Existing examples for TextBox, ComboBox, and DatePicker have been updated to showcase additional properties and programmatic interactions.

example/lib/screens/forms · high confidence

Expanded localization support for FluentUI widgets

The \lib/l10n\ directory now includes comprehensive translation files (\.arb\) for a wide range of languages, including Arabic, Belarusian, Bengali, Catalan, Czech, German, Greek, English, Spanish, and Persian, among others. These files provide localized strings for core UI components such as navigation bars, tab views, text selection controls (cut, copy, paste, undo), date and time pickers, and the color picker, ensuring that users see interface labels, tooltips, and color names in their preferred language.

lib/l10n · high confidence

Expanded popup examples in the example app

The example app's popups section now includes dedicated demonstration pages for ContentDialog, Flyout, MenuBar, TeachingTip, and Tooltip. These new screens provide interactive code snippets and live previews for modal dialogs, context-aware flyouts with placement and barrier options, horizontal menu bars with submenus and radio items, contextual teaching tips with alignment controls, and various tooltip configurations including horizontal display and text wrapping.

example/lib/screens/popups · high confidence

FluentApp now supports Flutter Router and introduces FluentPageRoute

The \FluentApp\ widget has been updated to support the modern Flutter Router API via a new \FluentApp.router\ constructor, allowing developers to use \routerConfig\ or individual router delegates instead of the legacy \Navigator\. Additionally, the library introduces \FluentPage\ and \FluentPageRoute\ to provide Windows-styled drill-in navigation transitions, replacing the previous basic \FluentTheme\ wrapper with a more comprehensive application entry point.

lib/src · high confidence

The example application has been introduced to demonstrate the Fluent UI library's capabilities. It features a comprehensive navigation structure using \NavigationView\ with support for dynamic search, pane expanders, and multiple display modes (auto, minimal, compact, open). The app showcases a wide range of controls including inputs (TextBox, ComboBox, ToggleSwitch), surfaces (Card, InfoBar), and navigation components (Pivot, BreadcrumbBar). It integrates platform-specific features such as Windows acrylic window effects, system accent color loading, and deferred route loading for performance. Theming is handled via a central \AppTheme\ provider, allowing users to toggle between light and dark modes, adjust visual density, and change text scale factors.

example/lib · high confidence

Initial setup of the Flutter example application

The example project has been created, providing a showcase for the fluent\_ui package. This includes the initial project structure with platform-specific folders (Android, iOS, Linux, macOS, Web, Windows), configuration files for linting (analysis\_options.yaml) and version control (.gitignore), and a README with setup instructions.

example · high confidence

Introduce Fluent Design system styles, theme, and page transitions

The library now provides a complete Fluent Design styling system. Users can apply the theme via the new \FluentTheme\ widget and access the \FluentThemeData\ configuration. The \Colors\ class exposes the Windows system palette with accent and shaded color variants, while \ResourceDictionary\ provides component-specific colors for both light and dark modes. A \Typography\ class implements the Windows 11 type ramp, and \AnimatedFluentTheme\ allows for smooth theme transitions. Additionally, new page transition widgets (\EntrancePageTransition\, \DrillInPageTransition\, \HorizontalSlidePageTransition\) are available to match Windows navigation animations.

lib/src/styles · high confidence

New Fluent Design surface controls and materials

This release introduces a suite of new UI components and visual materials to the library. Users can now use the Acrylic and Mica widgets to apply Fluent Design background effects, including translucency, blur, and wallpaper integration. Several new layout and status controls are available: Card for grouping content, CommandBar and CommandBarCard for action toolbars, Expander for collapsible sections, InfoBar for status messages, and ListTile for list items with selection support. Additionally, the ProgressRing and ProgressBar widgets provide visual feedback for ongoing operations.

lib/src/controls/surfaces · high confidence

New Fluent UI button controls and theming system

This change introduces a complete set of new button widgets—Button, FilledButton, OutlinedButton, HyperlinkButton, and IconButton—along with a shared BaseButton foundation and a dedicated ButtonTheme system. Users can now style buttons using a new ButtonStyle that supports state-aware properties (textStyle, backgroundColor, foregroundColor, shadowColor, elevation, padding, shape, iconSize) and theme-level configuration via ButtonTheme. The buttons expose granular gesture callbacks (onPressed, onLongPress, onTapDown, onTapUp) and support directional padding via EdgeInsetsDirectional. Icon buttons include size modes (tiny, small, large) and can be made small via a SmallIconButton inherited widget.

lib/src/controls/buttons · high confidence

New Fluent UI input controls and components

This release introduces a comprehensive set of new input controls to the library, including Checkbox, DropDownButton, RadioButton, RatingControl, Slider, SplitButton, ToggleButton, and ToggleSwitch. These widgets provide users with standard UI elements for selection, rating, and navigation, featuring support for themes, accessibility labels, focus management, and state-driven styling consistent with Fluent Design guidelines.

lib/src/controls/inputs · high confidence

New example app input screens for Buttons, Checkboxes, RadioButtons, Rating, Sliders, and ToggleSwitches

The example application now includes dedicated input demonstration pages for core Fluent UI controls. The Button page showcases standard, filled, hyperlink, and icon buttons, including a new SplitButton with a color-picker flyout and toggle states. Checkboxes demonstrate both two-state and three-state (indeterminate) modes, including integration with TreeView. RadioButtons are now managed via Flutter's RadioGroup, allowing for grouped selections like background color or shipping speed. New pages also cover the RatingControl (with custom star counts and icons), Sliders (horizontal and vertical), and ToggleSwitches (with custom content and loading states).

example/lib/screens/inputs · high confidence

New example app widgets and UI comparison views

The example application now includes several new helper widgets and demonstration pages. A \CodeSnippetCard\ widget allows users to view and copy syntax-highlighted code snippets with a copy-to-clipboard feature. A \DeferredWidget\ implementation enables deferred component loading to improve startup performance. A \UIEquivalents\ page provides a side-by-side comparison of Fluent, Material, and Cupertino UI components (such as buttons, checkboxes, and radio groups) to help users understand cross-platform UI mappings. Additionally, a \Page\ mixin and \Page\ widget simplify the structure of example pages by providing consistent styling for descriptions and subtitles.

example/lib/widgets · high confidence

New example screens for Surface components

The example application now includes dedicated demonstration pages for several surface-level UI components. Users can explore interactive examples for Acrylic (with customizable tint, blur, and elevation), CommandBar (supporting vertical layouts, compact modes, and overflow behaviors), Expander (including scrollable content and programmatic state control), InfoBadge (showing style variants like success/attention/critical and integration with NavigationView), InfoBar (demonstrating popup and inline modes with severity options), ProgressBar and ProgressRing (both indeterminate and determinate states), and Tiles (featuring single and multiple selection modes with customizable leading/trailing content).

example/lib/screens/surface · high confidence

New flyout-based popup controls: ContentDialog, MenuBar, MenuFlyout, TeachingTip, and Tooltip

This release introduces a comprehensive set of new popup and flyout controls in the \lib/src/controls/flyouts\ directory, replacing older implementations with a unified, flyout-based architecture. Users can now use \ContentDialog\ for modal confirmation dialogs with customizable constraints and actions, \MenuBar\ for top-level application menus with overflow handling (wrap or scroll), and \MenuFlyout\ for context menus and sub-menus with improved positioning and transition support. Additionally, \TeachingTip\ provides semi-persistent, contextual guidance for onboarding, while the \Tooltip\ widget has been re-implemented to use the new flyout system, offering better positioning, trigger modes, and accessibility features. These controls share a common \Flyout\ infrastructure, enabling consistent animations, placement modes (auto, top, bottom, left, right, full), and state management across the application.

lib/src/controls/flyouts · high confidence

New form input controls and selection toolbar

This release introduces a comprehensive set of new form controls for building Windows-styled interfaces. Users can now use AutoSuggestBox for text input with dynamic filtering and suggestions, ComboBox for selecting from a list of options, and EditableComboBox which allows users to type custom values not present in the list. Numeric input is handled by NumberBox, which supports formatting, parsing, and expression evaluation. Password entry is secured with PasswordBox, featuring configurable reveal modes. The standard TextBox and its form-integrated counterpart TextFormBox are also included, along with FormRow for consistent layout of helper and error text. Additionally, a Windows-styled text selection toolbar (WindowsTextSelectionToolbar) is provided for cut, copy, paste, and undo actions within text fields.

lib/src/controls/form · high confidence

New home and settings screens for the example app

The example app now features a redesigned home screen that showcases core Fluent UI components (inputs, forms, progress, surfaces, icons, colors, typography) alongside their Material and Cupertino equivalents, and a comprehensive settings screen allowing users to toggle theme mode, navigation pane display mode, navigation indicators, and visual density.

example/lib/screens · high confidence

New layout controls: ScaffoldPage, DynamicOverflow, and HorizontalScrollView

Added three new layout widgets to the Fluent UI library. ScaffoldPage provides a structured page layout following Windows Fluent Design guidelines, featuring optional headers, content areas, and bottom bars, with automatic padding and support for scrollable content or keyboard avoidance. DynamicOverflow is a new widget that lays out children in a single run and hides those that do not fit, displaying a specified overflow widget instead, with callbacks to notify when hidden children change. HorizontalScrollView is a specialized scroll view that scrolls horizontally and enables mouse wheel scrolling for desktop platforms.

lib/src/controls/layout · high confidence

New navigation example screens for BreadcrumbBar, NavigationView, TabView, and TreeView

The example application now includes dedicated demonstration pages for four navigation controls. The BreadcrumbBar example shows a horizontal navigation trail that collapses nodes on resize. The NavigationView example demonstrates top-level navigation with support for multiple display modes (top, expanded, compact, minimal), custom title bars, and opening content in new shell routes. The TabView example illustrates tab management features including keyboard shortcuts, tab width behaviors, close button visibility, and scroll options. The TreeView example showcases hierarchical lists with programmatic control via TreeViewController, including lazy loading and gesture handling.

example/lib/screens/navigation · high confidence

New route export files for example app screens

The example app now includes dedicated route export files (forms.dart, inputs.dart, navigation.dart, popups.dart, surfaces.dart, theming.dart) that aggregate and expose specific screen modules for each category. This change organizes the example app's navigation structure by grouping related UI components—such as form controls, input widgets, navigation views, popups, surfaces, and theming options—into centralized export points, making it easier to reference and integrate these screens within the app's routing logic.

example/lib/routes · high confidence

New theming showcase screens for colors, icons, typography, and reveal focus

The example app now includes dedicated screens under the theming section to demonstrate Fluent UI design tokens and effects. Users can explore a comprehensive color palette with copy-to-clipboard support, browse and filter the Windows and Fluent icon sets, preview the type ramp with adjustable scaling, and see the Reveal Focus lighting effect for 10-foot experiences. These additions provide interactive examples for applying themes, managing icon resources, and configuring focus states within the example application.

example/lib/screens/theming · high confidence

New utility widgets and theme support for Fluent UI controls

This update introduces several new utility components and theming infrastructure to the Fluent UI library. A new \InfoBadge\ widget is added, supporting severity-based styling (info, warning, success, critical) and adaptive sizing. A \Divider\ widget is introduced with a dedicated \DividerTheme\ for customizing thickness, margins, and decoration. A \FocusBorder\ widget with \FocusTheme\ provides animated focus indicators with configurable primary/secondary borders and glow effects. The \HoverButton\ base widget now exposes \onPointerEnter\ and \onPointerExit\ callbacks, allowing for more granular hover state handling. Additionally, a \WindowsIcon\ widget is added to automatically resolve Windows-specific icons with Fluent fallbacks, and a \RoundedRectangleGradientBorder\ shape is provided for gradient-styled borders. These utilities enhance the visual consistency and interactivity of Fluent UI applications.

lib/src/controls/utils · high confidence

Platform-aware shortcut labels and color name localization in Fluent UI

The localization extension for Fluent UI now provides platform-specific keyboard shortcut labels (e.g., 'Cmd' on macOS vs 'Ctrl' elsewhere) for actions like closing tabs, cutting, copying, and pasting. Additionally, it adds support for retrieving localized display names for a comprehensive list of standard colors, enabling the ColorPicker and other components to show user-friendly color names in the user's language.

lib/l10n/extension · high confidence

Behavioural changes

Expanded localization support for Fluent UI components

The generated localization files in lib/l10n/generated have been updated to include translations for a significantly broader range of languages, including Arabic, Belarusian, Bengali, Catalan, Czech, German, Greek, Hebrew, Hindi, and many others. This ensures that UI elements such as navigation tooltips, color picker labels, and action buttons are displayed in the user's preferred language.

lib/l10n/generated · high confidence

Library entry point restructured to expose specific controls and dependencies

The main library entry point (lib/fluent\_ui.dart) has been completely rewritten to replace the previous single export with a comprehensive list of explicit exports. This change introduces dependencies on external packages (flutter/widgets, material\_ui, scroll\_pos) and exposes a wide range of specific Fluent UI components, including buttons, flyouts, form controls, navigation elements, pickers, and styling resources, while removing the previous generic export of src/app.dart.

lib · high confidence

The NavigationView control has been restructured to support multiple display modes (top, expanded, compact, minimal, and auto) and improved state management. The pane items are now rendered using a new NavigationPane widget with StickyNavigationIndicator for smooth selection animations. Page state is preserved using AutomaticKeepAliveClientMixin and RepaintBoundary to prevent unnecessary rebuilds. The title bar now accounts for view padding and supports drag operations. Theme customization is available through NavigationPaneThemeData with properties for tile colors, highlight colors, and animation settings.

_lib/src/controls/navigation/navigation\view · high confidence

Fixes

TabView bodies remain attached to their tabs during reordering

When users reorder tabs in a TabView, the content bodies now stay correctly attached to their respective tabs instead of desynchronizing. This fix ensures that the visual state of the tab content matches the tab headers after a drag-and-drop reorder operation, preventing users from seeing the wrong content for a selected tab.

_lib/src/controls/navigation/tab\view · high confidence

Test coverage

Added widget tests for Fluent UI components; Updated code coverage report for localization and app entry point.

Dependencies

Fluent UI library upgraded to v4.17.0 with Flutter 3.32+ support and new dependencies

The core \fluent\_ui\ package has been updated to version 4.17.0, raising the minimum supported versions to Dart 3.8.0 and Flutter 3.32.0. This release introduces several new dependencies to extend functionality: \intl\ for date/time pickers, \scroll\_pos\ for TabView, \recase\ for the icon generator, \math\_expressions\ for NumberBox, and \material\_ui\ to allow Material components within FluentApp. Additionally, the package now includes FluentIcons and SegoeIcons fonts, Acrylic noise assets, and updated linting tools (\flutter\_lints\, \intl\_utils\). The example application has been restructured with a new macOS configuration (Podfile) and updated dependencies, while the root \pubspec.lock\ has been removed.

(dependencies) · high confidence

Housekeeping

Project scaffolding and developer tooling configuration

The repository now includes configuration files for Markdown linting (.markdownlint.json), package publishing exclusions (.pubignore), Dart analysis options (analysis\_options.yaml), and localization generation (l10n.yaml). An AGENTS.md file has been added to define coding standards and interaction guidelines for AI-assisted development. The README.md has been updated with badges, installation instructions, and localization support details, and the LICENSE file now contains the full BSD 3-Clause license text.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 66.

Lenses

  • Code Health 87
  • Architecture 98
  • Maturity 63
  • Readiness 51
  • Security 95
  • Domain Modelling 100

Changes since last survey

  • 300 commits — 194 feature/other, 106 fixes

By area

  • lib/src — 129 commits
  • (root) — 77 commits
  • (repo) — 31 commits
  • example/lib — 29 commits
  • lib/l10n — 7 commits
  • .github/workflows — 4 commits
  • bin/windows_icons — 2 commits
  • example/macos — 2 commits
  • test/date_picker_test.dart — 2 commits
  • .github/FUNDING.yml — 1 commit
  • bin/dictionary_generator.dart — 1 commit
  • example/.metadata — 1 commit
  • example/pubspec.yaml — 1 commit
  • test/card_test.dart — 1 commit
  • test/combo_box_test.dart — 1 commit
  • test/command_bar_test.dart — 1 commit
  • test/content_dialog_test.dart — 1 commit
  • test/flyout_content_test.dart — 1 commit
  • test/list_tile_test.dart — 1 commit
  • test/number_box_test.dart — 1 commit

Notable commits

  • fix: Add property enabled to PaneItemAction (Fix #1202)
  • fix: Fix '_overlay != null' assertion
  • fix: Fix ComboBox single-item dropdown crash on open (#1347)
  • fix: Fix Context menu on TextFormBox
  • fix: Fix MenuFlyoutSubItem "Null check operator used on a null value" during build
  • fix: Fix NumberBox compact overlay positioning for RTL directionality (#1293)
  • fix: Fix ProgressBar RTL direction (#1294)
  • fix: Fix Tooltip child state loss when cursor enters/leaves window (#1303)
  • fix: Fix Undo entry in textbox context menu is doubled
  • fix: Fix buttons next/previous month that wasn't taking scroll in consideration
  • fix: Fix changelog
  • fix: Fix visibleDate when scrolling
  • fix: Fixed an Issue where custom ContextMenuButtonItem are filtered out
  • fix: Merge pull request #1217 from WinXaito/bugfix/fr_translations
  • fix: chore(example): Build for Windows and remove macOS cocoapods (Fixes #1324)
  • fix: chore: fix tests
  • fix: fix(NavigationView): prevent spurious overlay flash when auto mode resizes from minimal → compact (#1316)
  • fix: fix(calendar-view): Correct calculation of first visible day and update color handling for matchup with microsoft guidelines
  • fix: fix(calendar-view): Extend decade view range to include additional years and adjust year disabling logic
  • fix: fix(calendar-view): Fix year view always showing 2025 as current year
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

bdlukaa/fluent_ui was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 316db94691d53e3afd3acca45bf504f42adf87d6 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.