Download Latest Version v4.15.0 - TreeView, Visual Density and bug fixes source code.tar.gz (3.1 MB)
Email in envelope

Get an email when there's a new version of Fluent UI

Home / v4.14.0
Name Modified Size InfoDownloads / Week
Parent folder
Navigation view rework, Flutter 3.41 source code.tar.gz 2026-02-21 3.1 MB
Navigation view rework, Flutter 3.41 source code.zip 2026-02-21 3.3 MB
README.md 2026-02-21 5.5 kB
Totals: 3 Items   6.4 MB 0
  • refactor: Consistent theme classes
  • fix: CalendarDatePicker throws state error when selecting date (#1251)
  • feat: Named constructors for InfoBar (#1247) dart InfoBar.info(title: Text(error)); InfoBar.warning(title: Text(error)); InfoBar.success(title: Text(error)); InfoBar.error(title: Text(error));
  • refactor: Expose TooltipState
  • fix: NumberBox calls onChanged() when clicked on (#1196)
  • feat: Add NumberBox.parser, which allows to use a custom parse function for the number box. (#1166)
  • feat: Support long pressing on NumberBox increment and decrement buttons. Added NumberBox.interval (#1267, #843, #1285)
  • fix: Correctly lerp between theme properties (#953)
  • fix: Correctly apply theme durations to animations (#1231)
  • feat: Apply text height on Typography
  • refactor: Encourage usage of EdgeInsetsDirectional instead of EdgeInsets
  • BREAKING CHANGE refactor: Remove BottomNavigationBar and all its related widgets
  • MINOR BREAKING refactor: Remove Brightness.isLight, Brightness.isDark and Brightness.opposite extension methods. Use switch statements instead.
  • feat: Add latest color resources from Microsoft UI XAML.
  • refactor(perf): Optimize animation handling in Scrollbar, NavigationView, Acrylic and buttons.
  • refactor(perf): Reduce calls to setState and frames scheduling in several widgets.
  • BREAKING CHANGE NavigationView reworked to be more flexible and match the Windows UI 3 specs.
  • Renamed PaneDisplayMode.open to PaneDisplayMode.expanded.
  • Renamed appBar to titleBar.
  • Removed NavigationAppBar class. Any widget can now be a title bar.
  • Introduced the TitleBar widget, which matches the design and functionality of a Window title bar.
  • Added PaneBackButton widget, a button that allows the user to pop the current route.
  • Added PaneToggleButton widget, a button that opens or close the navigation view pane. (#1051)
  • Added NavigationPane.toggleButtonPosition, which sets the preferred position of the toggle button. (#669)
  • PaneItems are now lazy-loaded, improving overall performance (#742)
  • Updated StickyNavigationIndicator animation to match Win UI 3 specs (#540)
  • Updated colors and margins to match Win UI 3 specs (#1181)
  • PaneItemExpander now supports deep nesting (#1019)
  • PaneItemExpander no longer resets itself when the tree is updated. (#876)
  • PaneItemExpander doesn't require a body anymore. If no body is provided, the item will not be selectable. (#1189)
  • Keyboard Navigation was enhanced. Items are visible in the scroll view when focused.
  • Updated content management to only display the current visible item at once. (#1101)
  • Expose NavigationView important data using NavigationView.dataOf(context)
  • Added NavigationPane.acrylicDisabled, which allows disabling acrylic material effect of the pane overlays
  • InfoBadge style variants (success, attention, critical), dot badges and adaptive sizing (#1277)
  • NavigationView holds a local history. Use NavigationView.of(context).pop() or PaneBackButton to navigate to the previous index (#1266)
  • chore: Updated Russian translations (#1253)
  • Update Chinese translations (#1283)
  • BREAKING CHANGE RadioButton API reworked to use RadioGroup for state management.
  • Removed checked and onChanged parameters from RadioButton.
  • Added required value parameter to RadioButton<T>.
  • Radio buttons must now be wrapped in a RadioGroup<T>, which holds groupValue and onChanged.
  • Radio buttons are no longer toggleable (selecting an already-selected button has no effect).

Before: dart RadioButton( checked: selectedIndex == 0, onChanged: (value) { if (value) setState(() => selectedIndex = 0); }, content: Text('Option 1'), )

After: dart RadioGroup<int>( groupValue: selectedIndex, onChanged: (value) { if (value != null) setState(() => selectedIndex = value); }, child: Column( children: [ RadioButton<int>(value: 0, content: Text('Option 1')), RadioButton<int>(value: 1, content: Text('Option 2')), ], ), )

  • fix: Flyout barrier color (#1276)
Source: README.md, updated 2026-02-21