PackageTrack
Sign in Get early access

fluent_ui

Implements Microsoft's Windows User Interface in Flutter.

4.16.1 26K downloads/mo #1973 most downloaded on pub.dev bdlukaa/fluent_ui

What this package is like to depend on

Last release 21 days ago

03 Aug 2026

Release timing varies

gaps range from 2 weeks to 5 months

Nearly every release is documented

notes for 124 of 125 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

130 releases · first in 2021

6 releases in the last 12 months

see the full history below

Release timeline

130 releases · Feb 2021 to Aug 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 130
  1. 4.16.1 03 Aug 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v4.16.0...v4.16.1

    Open source →
    Release notes
    • fix: ComboBox no longer throws when opening a dropdown with a single item (#1347)
    • fix: TabView now keeps each tab's body (and its state) attached to its tab when tabs are reordered, instead of leaving a stateful body parked at its old slot while the header moves
    • feat: MenuBar.overflowBehavior (#1337) MenuBar now uses RawMenuBar under the hood.
    • feat: Tooltip.enableTapToDismiss and Tooltip.onTriggered (#1338) Tooltip now uses RawTooltip under the hood.
    • refactor(perf): TitleBar now doesn't listen for onDoubleTap if the caller doesn't provide a callback. Listening for onDoubleTap causes a 300ms delay on single taps (#1340)
    • fix: NumberBox fix focus (using tab) when clearButton is true (#1341)
    • fix: ComboBox now expands vertically for larger text scaling, preventing clipped text (#1342)
    • feat: AutoSuggestBox.popupDirection (#1345)
    Open source →
  2. 4.16.0 28 Jun 2026
    Release notes
    • refactor: Flutter 3.44.0 support
    • fix: MenuBar now doesn't throw "Duplicated Global Key" and/or Rendering exceptions when hovering on different MenuBarItem(s) with the flyout open (#1334)
    • fix: Tooltip now correctly uses constructor-given style ((#1321)[https://github.com//pull/1321])
    • fix: Correctly apply ButtonStyle.textStyle to Buttons content (#1318)
    • fix: Correctly forward navigation view theme to flyout items (#1325)
    • fix(mobile): TitleBar now accounts for view padding (05c122b)
    • fix: FluentTextSelectionToolbar no longer ignores custom ContextMenuButtonItems (#1317)
    • fix: NumberBox remove ghost focus and do not focus inline buttons anymore (#1332)

    What's Changed

    • fix: NavigationView compact pane PaneItemExpander flyout size and position by @bdlukaa with @Copilot in #1310
    • fix: MenuFlyout sub-item tree direction and icon in RTL mode by @bdlukaa with @Copilot in #1313
    • fix(NavigationView): prevent spurious overlay flash when auto mode resizes from minimal → compact by @bdlukaa with @Copilot in #1316
    • fix: Tab draggable from full area including padding by @bdlukaa with @Copilot in #1315
    • fix: TitleBar height shrinks when window width is reduced by @bdlukaa with @Copilot in #1309
    • fix: Tooltip now correctly uses constructor-given style by @jacksonb-cs in #1321
    • chore: add tests for button inherited text style by @jacksonb-cs in #1322
    • Selection toolbar by @bdlukaa in #1330
    • fix(numberbox): skip traversal and inline buttons by @WinXaito in #1332
    • Fixed Hovering behaviour with open MenuBar by @ProgettiPascon in #1335

    New Contributors

    Full Changelog: v4.15.0...v4.16.0

    Open source →
    Release notes
    • refactor: Flutter 3.44.0 support
    • fix: MenuBar now doesn't throw "Duplicated Global Key" and/or Rendering exceptions when hovering on different MenuBarItem(s) with the flyout open (#1334)
    • fix: Tooltip now correctly uses constructor-given style ((#1321)[https://github.com/bdlukaa/fluent_ui/pull/1321])
    • fix: Correctly apply ButtonStyle.textStyle to Buttons content (#1318)
    • fix: Correctly forward navigation view theme to flyout items (#1325)
    • fix(mobile): TitleBar now accounts for view padding (05c122b)
    • fix: FluentTextSelectionToolbar no longer ignores custom ContextMenuButtonItems (#1317)
    • fix: NumberBox remove ghost focus and do not focus inline buttons anymore (#1332)
    Open source →
  3. 4.15.1 27 Mar 2026
    Release notes
    • fix: NavigationView auto display mode no longer shows a brief overlay when resizing from minimal to compact mode (#1316)
    • fix: MenuFlyout sub-item tree now correctly expands to the left and shows a chevron_left icon when right-to-left directionality is enabled (#1342)
    • fix: NavigationView compact pane PaneItemExpander flyout is now correctly placed in right-to-left directionality; Flyout leftTop and rightTop placement modes now correctly align with the top of the target element when the flyout is taller than the available space above the target (#1289)
    • fix: Tab in TabView is now draggable from its entire area, including the padding (#1356)
    Open source →
  4. 4.15.0 06 Mar 2026
    Release notes
    • fix: MenuFlyout no longer throws TypeError on sub-items (#1337)
    • feat: Controls now respond to VisualDensity from FluentThemeData for compact sizing. Use FluentThemeData(visualDensity: VisualDensity.compact) to enable compact mode (#1175)
    • fix: NavigationView no longer throws BoxConstraints has a negative minimum height when header and menu button are both absent (#1334)
    • fix: ProgressBar chooses the correct direction when directionality is right-to-left (#1291)
    • fix: Flyout's bottom shadow no longer clipped in bottom placement modes (#1323)
    • fix: Correctly handle system text scaling on DatePicker, TimePicker, AutoSuggestBox, CalendarDatePicker popups (#1321, #1286)
    • BREAKING feat: Rename RatingBar to RatingControl, and updated its style (#1274)
    • fix: NumberBox compact overlay is now positioned correctly on right-to-left directionality (#1326)
    • BREAKING feat: Add TreeViewController for programmatic control of TreeView (#1140)
      • TreeViewController provides methods: getItemFromValue(), addItem(), addItems(), removeItem(), moveItem(), expandItem(), collapseItem(), expandAll(), collapseAll(), selectItem(), deselectItem(), selectAll(), deselectAll()
      • Reordering items is supported via controller.moveItem(item, newParent: target, index: 0)
    • BREAKING feat: TreeViewItem.children is now unmodifiable. Use TreeViewController methods (addItem(), addItems(), removeItem(), moveItem()) to modify tree structure.
    • feat: TitleBar now supports double-click callback to maximize or restore the window (#1298)
    • fix: Correctly apply TitleBar's isBackButtonEnabled (#1298)

    What's Changed

    • Fix TimePicker/DatePicker popup overflow when system text scaling is active by @Copilot in #1286
    • feat: Update rating control, add example and update changelog by @bdlukaa in #1288
    • fix: Remove ClipRect after flyout animation completes to prevent shadow clipping by @Copilot in #1295
    • Fix NumberBox compact overlay positioning for RTL directionality by @Copilot in #1293
    • Fix ProgressBar RTL direction by @Copilot in #1294
    • Add double tap callback to title bar by @frg2089 in #1298
    • feat: Add TreeViewController with programmatic reordering to TreeView by @Copilot in #1297
    • fix: NavigationView negative BoxConstraints when header and menu button are absent by @Copilot in #1299
    • feat: Implement compact sizing for controls via VisualDensity by @Copilot in #1301
    • fix: MenuFlyout TypeError on findRenderObject in sub-item hover handler by @Copilot in #1306
    • Fix Tooltip child state loss when cursor enters/leaves window by @Copilot in #1303

    New Contributors

    Full Changelog: v4.14.0...v4.15.0

    Open source →
    Release notes
    • fix: MenuFlyout no longer throws TypeError on sub-items (#1337)
    • feat: Controls now respond to VisualDensity from FluentThemeData for compact sizing. Use FluentThemeData(visualDensity: VisualDensity.compact) to enable compact mode (#1175)
    • fix: NavigationView no longer throws BoxConstraints has a negative minimum height when header and menu button are both absent (#1334)
    • fix: ProgressBar chooses the correct direction when directionality is right-to-left (#1291)
    • fix: Flyout's bottom shadow no longer clipped in bottom placement modes (#1323)
    • fix: Correctly handle system text scaling on DatePicker, TimePicker, AutoSuggestBox, CalendarDatePicker popups (#1321, #1286)
    • BREAKING feat: Rename RatingBar to RatingControl, and updated its style (#1274)
    • fix: NumberBox compact overlay is now positioned correctly on right-to-left directionality (#1326)
    • BREAKING feat: Add TreeViewController for programmatic control of TreeView (#1140)
      • TreeViewController provides methods: getItemFromValue(), addItem(), addItems(), removeItem(), moveItem(), expandItem(), collapseItem(), expandAll(), collapseAll(), selectItem(), deselectItem(), selectAll(), deselectAll()
      • Reordering items is supported via controller.moveItem(item, newParent: target, index: 0)
    • BREAKING feat: TreeViewItem.children is now unmodifiable. Use TreeViewController methods (addItem(), addItems(), removeItem(), moveItem()) to modify tree structure.
    • feat: TitleBar now supports double-click callback to maximize or restore the window (#1298)
    • fix: Correctly apply TitleBar's isBackButtonEnabled (#1298)
    • fix: TitleBar height no longer shrinks when the window is resized to a smaller width (#1340)
    Open source →
  5. 4.14.0 21 Feb 2026
    Release notes
    • refactor: Consistent theme classes

    • fix: CalendarDatePicker throws state error when selecting date (#1251)

    • feat: Named constructors for InfoBar (#1247)

      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. Before:

      final theme = FluentTheme.of(context);
      final color = theme.brightness.isDark ? Colors.white : Colors.black;
      

      After:

      final theme = FluentTheme.of(context);
      final color = switch (theme.brightness) {
        Brightness.light => Colors.black,
        Brightness.dark => Colors.white,
      };
      
    • 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:

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

      After:

      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)

    Open source →
  6. 4.13.0 23 Sep 2025
    Release notes
    • fix: NavigationView transition when in top (#1220)

    • feat: Added CalendarView widget (#1232 thanks to @asmitta-01, #236)

    • feat: Added CalendarDatePicker (#236)

    • feat: Added WindowsIcon and WindowsIcons (#1237)

    • fix: Slider label on drag (#1248)

    • fix: closeAfterClick at the item level is no longer ignored on DropDownButton (#1245)

    • MINOR BREAKING feat: FlyoutController.close can now return a value to the previous route. (#1246) Before:

      // normally close the flyout
      flyoutController.close();
      
      // forcefully close the flyout
      flyoutController.close(true);
      

      After:

      // normally close the flyout
      final result = flyoutController.close<String>('my result');
      
      // forcefully close the flyout
      flyoutController.forceClose();
      
    • fix: Check if AutoSuggestBox is mounted before dismissing overlay (#1228)

    Open source →
  7. 4.12.0 22 May 2025
    Release notes
    • feat: Support Flutter 3.32
    • feat: Added TextBox.onTapUpOutside, TextBox.forceLine, TextBox.mouseCursor, TextBox.onAppPrivateCommand, TextBox.onSelectionHandleTapped, TextBox.scrollBehavior, TextBox.textScaler, TextBox.textHeightBehavior, TextBox.textWidthBasis.
    • feat: Removed TextBox.clearButtonMode (#1225)
    • fix: FlyoutController being used after disposed (#1224)
    Open source →
  8. 4.11.5 17 May 2025
    Release notes
    • fix: Add missing translations for French (#1217)
    • fix: Add missing translations for Spanish (58bfc)
    • fix: Context Menu was not available on TextFormBox (#1216, #1219)
    • fix: Undo entry was doubled in EditableText context menu (#1218)
    Open source →
  9. 4.11.4 10 May 2025
    Release notes
    • feat: Added Tagalog localization support (#1207)

    • feat: Added ListTile.decorationMargin parameter

    • fix: Custom ContextMenuButtonItem are correctly displayed on text selection control (#1212)

    • fix: TreeView's focus always starts at first or last item (#834, #1195)

    • fix: InfoBar no longer throw error when automatically closing (#955, #1215)

    • fix: Properly disable date and time pickers when onChanged is null (#1210)

    • fix: MenuFlyoutSubItem no longer errors while building when FlyoutPlacementMode.auto is used (#1206, #1191)

    • fix: The checkbox inside ListTile.selectable should not have its own focus (#1144)

    • feat: BaseButton.onTapUp reflects the GestureDetector.onTapUp (#1201)

    • feat: Add BreadcrumbBar.chevronAlignment (#1213)

    • MINOR BREAKING feat: Tab.backgroundColor, Tab.selectedBackgroundColor, Tab.foregroundColor, Tab.selectedForegroundColor and Tab.outlineColor are now instance of WidgetStateProperty<Color>. (#1214) Before:

      Tab(
        backgroundColor: FluentTheme.of(context).inactiveColor,
        selectedBackgroundColor: Colors.blue,
        foregroundColor: Colors.white,
        selectedForegroundColor: Colors.black,
        outlineColor: Colors.grey,
      ),
      

      After:

      Tab(
        backgroundColor: WidgetStateProperty.resolveWith((_) {
          return FluentTheme.of(context).inactiveColor;
        }),
        selectedBackgroundColor: WidgetStateProperty.all(Colors.blue),
        foregroundColor: WidgetStateProperty.all(Colors.white),
        selectedForegroundColor: WidgetStateProperty.all(Colors.black),
        outlineColor: WidgetStateProperty.all(Colors.grey),
      ),
      

      This allows the Tab to be customized based on its state, such as hovered, pressed, focused, and disabled, and to be affected by theme changes.

    Open source →
  10. 4.11.3 08 Apr 2025
    Release notes
    • fix: TabView.newTabIcon is now typed as a Widget (#1187)
    • feat: Expanded.enabled (#1188)
    • fix: Correctly apply TextBox.unfocusedColor on unfocused highlight border (#1192)
    • fix: Correctly update TimePicker (#1198)
    • feat: Keyboard Shortcuts for TimePicker and DatePicker popups (#1200)
    • fix: Add property enabled to PaneItemAction (#1202)
    Open source →
  11. 4.11.2 22 Feb 2025
    Release notes
    • fix: Use correct scaffold background color when view is provided
    Open source →
  12. 4.11.1 09 Feb 2025
    Release notes
    • fix: Do not show selected indicator on menu flyout items.
    Open source →
  13. 4.11.0 07 Feb 2025
    Release notes
    • fix: hide Tab's close button when onClosed is null

    • feat: Add TextBox.cursorOpacityAnimates (defaults to FluentThemeData.cursorOpacityAnimates, which defaults to false); default setting improves CPU/GPU efficiency while TextBox has focus (#1164)

    • fix: DatePicker selectable range matches the one between startDate and endDate (#1170)

    • fix: ScaffoldPage has a built-in color if no parent NavigationView is found (#1168)

    • feat: Added FlyoutController.showFlyout.buildTarget (#1173)

      Primary items of the command bar are now accessible through the secondary flyout.

    • feat: Added these options to FlyoutController (#1178)

      • horizontalOffset, which manipulates how the flyout will be positioned horizontally;
      • reverseTransitionDuration, which sets the duration of the reverse transition;
      • transitionCurve, which sets the curve of the transition;
    • feat: Added FlyoutController.close (#1174)

    • fix: Use the correct placement mode in transition when automatic mode is selected (#1178)

    • feat: FlyoutContent and MenuFlyout now match their native counterparts (#1178)

    • fix: Jitter when displaying flyouts and sub flyouts (#1014)

    • fix: Menu sub items have the same transition as their parents (#1178)

    • feat: Implemented MenuBar (#1107)

    • chore: SubItemShowBehavior was renamed to SubItemShowAction (#1178)

    • feat: Flyouts are closed when the window size changes (#1178)

    • feat: Added CommandBarButton.closeAfterClick (#1149)

    • fix: CommandBar secondary menu preferred placement mode (#1174)

    • feat: CommandBarState is now accessible, making it possible to open/close the secondary flyout programmatically (#1174)

      final commandBarKey = GlobalKey<CommandBarState>();
      
      CommandBar(
        key: commandBarKey,
        ...,
      ),
      
      commandBarKey.currentState?.toggleSecondaryMenu();
      commandBarKey.currentState?.secondaryFlyoutController.close();
      
    • fix: TextBox alignment no longer depend on decoration (#1027)

    • feat: Added TextBox.undoController and implemented "Undo" action in toolbar options (#1175)

    • feat: Handle TextBox context menu controls on mobile platforms (#1022)

    • fix: Default TextBox border

    • feat: Added Nepali localization support (#1177)

    • feat: Teaching Tips (#412)

    • feat: Added more flyout placement modes: leftTop, leftCenter, leftBottom, rightTop, rightCenter and rightBottom. left and right are now deprecated and default to leftCenter and rightCenter, respectively. Additionally, added the full placement mode, which allows the flyout to position itself within the screen. (#570)

    Open source →
  14. 4.10.0 13 Dec 2024
    Release notes
    • fix: Add missing properties (closeIconSize, closeButtonStyle) in debugFillProperties and InfoBarThemeData.merge (#1128

    • feat: Add TabView.reservedStripWidth, which adds a minimum empty area between the tabs and the tab view footer (#1106)]

    • fix: Correctly unfocus NumberBox when user taps outside (#1135)

    • fix: Do try to scroll Date and Time at build time (#1117)

    • feat: Use a Decoration instead of Color in NavigationAppBar (#1118)

    • feat: Add EditableComboBox.inputFormatters (#1041)

    • BREAKING feat: TextBox.decoration and TextBox.foregroundDecoration are now of type WidgetStateProperty (#987)

      Before:

      TextBox(
        decoration: BoxDecoration(
          color: Colors.red,
        ),
        foregroundDecoration: BoxDecoration(
          color: Colors.blue,
        ),
      ),

      After:

      TextBox(
        decoration: WidgetStateProperty.all(BoxDecoration(
          color: Colors.red,
        )),
        foregroundDecoration: WidgetStateProperty.all(BoxDecoration(
          color: Colors.blue,
        )),
      ),
    • feat: Add TabView.gestures, which allows the manipulation of the tab gestures (#1138)

    • feat: Add DropDownButton.style (#1139)

    • feat: Possibility to open date and time pickers programatically (#1142)

    • fix: TimePicker hour offset

    • feat: Add ColorPicker (#1152)

    • fix: NumberBox initial value formatting (#1153)

    • fix: NumberBox incrementing/decrementing when not focused (#1124)

    • fix: NumberBox text is correctly when there are no visible actions (#1150)

    What's Changed

    New Contributors

    Full Changelog: v4.9.2...v4.10.0

    Open source →
    Release notes
    • fix: Add missing properties (closeIconSize, closeButtonStyle) in debugFillProperties and InfoBarThemeData.merge (#1128

    • feat: Add TabView.reservedStripWidth, which adds a minimum empty area between the tabs and the tab view footer (#1106)]

    • fix: Correctly unfocus NumberBox when user taps outside (#1135)

    • fix: Do try to scroll Date and Time at build time (#1117)

    • feat: Use a Decoration instead of Color in NavigationAppBar (#1118)

    • feat: Add EditableComboBox.inputFormatters (#1041)

    • BREAKING feat: TextBox.decoration and TextBox.foregroundDecoration are now of type WidgetStateProperty (#987)

      Before:

      TextBox(
        decoration: BoxDecoration(
          color: Colors.red,
        ),
        foregroundDecoration: BoxDecoration(
          color: Colors.blue,
        ),
      ),
      

      After:

      TextBox(
        decoration: WidgetStateProperty.all(BoxDecoration(
          color: Colors.red,
        )),
        foregroundDecoration: WidgetStateProperty.all(BoxDecoration(
          color: Colors.blue,
        )),
      ),
      
    • feat: Add TabView.gestures, which allows the manipulation of the tab gestures (#1138)

    • feat: Add DropDownButton.style (#1139)

    • feat: Possibility to open date and time pickers programmatically (#1142)

    • fix: TimePicker hour offset

    • feat: Add ColorPicker (#1152)

    • fix: NumberBox initial value formatting (#1153)

    • fix: NumberBox incrementing/decrementing when not focused (#1124)

    • fix: NumberBox text is correctly when there are no visible actions (#1150)

    Open source →
  15. 4.9.2 09 Oct 2024
    Release notes
    • feat: NavigationAppBar.leading now has a minimum width of kCompactNavigationPaneWidth instead of being fixed to this width (#1103)
    • feat: Add TabView.stripBuilder (#1106)
    • fix: Correctly apply EditableComboBox.style (#1121)
    • feat: Add BreadcrumbBar.chevronIconBuilder and BreadcrumbBar.chevronIconSize (#1111)
    • fix: Consider object translation on Menu Flyouts (#1104)
    • fix: Correctly disable DropDownButton items if onPressed is not provided (#1116)
    • feat: Add ToggleMenuFlyoutItem and RadioMenuFlyoutItem (#1108)

    What's Changed

    • Change NavigationAppBar leading widget to be min width instead of fix… by @nu11ptr in #1103
    • The EditableComboBox is missing the part that applies the style to the TextBox, so add it. by @hanwha-cheoldong in #1121

    New Contributors

    Full Changelog: v4.9.1...v4.9.2

    Open source →
    Release notes
    • feat: NavigationAppBar.leading now has a minimum width of kCompactNavigationPaneWidth instead of being fixed to this width (#1103)

    • feat: Add TabView.stripBuilder (#1106)

    • fix: Correctly apply EditableComboBox.style (#1121)

    • feat: Add BreadcrumbBar.chevronIconBuilder and BreadcrumbBar.chevronIconSize (#1111)

    • fix: Consider object translation on Menu Flyouts (#1104)

    • fix: Correctly disable DropDownButton items if onPressed is not provided (#1116)

    • feat: Add ToggleMenuFlyoutItem and RadioMenuFlyoutItem (#1108)

    Open source →
  16. 4.9.1 07 Aug 2024
    Release notes
    • feat: ¹ NumberBox now supports precision greater than 4. ² Add NumberBox.pattern, NumberBox.formatter, NumberBox.format (#1080)
    • fix: Resolved issue where PaneItem within PaneItemExpander remained accessible in NavigationPane compact mode (#1081)
    • fix: Correct number of days on DatePicker popup (#1049)
    • feat: Create PaneItemWidgetAdapter (#1087)
    • feat: Add maxWidth to TooltipThemeData for optional wrapping of long tooltips (#1094)
    • fix: Fixed compile errors with Flutter 3.24.0 stable (#1097)

    What's Changed

    • Fix: PaneItem Behavior in Compact Mode by @WXL-steven in #1082
    • fix: Update NumberBox formatting pattern for precision by @FourLeafTec in #1080
    • Add maxWidth to tooltip theme for easy text-wrapping by @klondikedragon in #1095
    • Remove checkerboarding parameters and properties as Flutter 3.24 removed them by @h3x4d3c1m4l in #1097

    New Contributors

    Full Changelog: v4.9.0...v4.9.1

    Open source →
    Release notes
    • feat: ¹ NumberBox now supports precision greater than 4. ² Add NumberBox.pattern, NumberBox.formatter, NumberBox.format (#1080)
    • fix: Resolved issue where PaneItem within PaneItemExpander remained accessible in NavigationPane compact mode (#1081)
    • fix: Correct number of days on DatePicker popup (#1049)
    • feat: Create PaneItemWidgetAdapter (#1087)
    • feat: Add maxWidth to TooltipThemeData for optional wrapping of long tooltips (#1094)
    • fix: Fixed compile errors with Flutter 3.24.0 stable (#1097)
    Open source →
  17. 4.9.0 30 Jun 2024
    Release notes
    • fix: ¹ DropDownButton.closeAfterClick is now correctly applied. ² Added MenuFlyoutItem.closeAfterClick, which defaults to true. (#1016)

    • fix: MenuFlyoutSubItem does not close when pressed (#1037)

    • fix: Make ScaffoldPage opaque (#1048)

    • fix: Scroll issue in DatePicker. (#1054)

    • feat: Add NumberBox.textInputAction and NumberBox.onEditingComplete (#1063)

    • fix: NumberBox does not calls a rebuild when it is already building (#1064)

    • feat: Add Tab.color, Tab.selectedColor and Tab.outlineColor to TabView (#1068)

    • feat: Added NavigationView.onItemPressed callback, called when the item is on tap (#1067)

    • fix: Mark MenuFlyoutItem as disabled when .onPressed is null (#1074)

    • BREAKING feat: Removed ButtonState, ButtonStates and their related classes. Use WidgetStateProperty, WidgetState instead. (#1075)
      Before:

      Button(
        style: ButtonStyle(
          shape: ButtonState.all(RoundedRectangleBorder(...)),
          backgroundColor: ButtonState.resolveWith((states) {
            if (states.isPressed) {
              return Colors.blue.shade900;
            }
            return Colors.blue;
          }),
          foregroundColor: ButtonState.resolveWith((states) {
            return ButtonState.forStates<Color>(
              states,
              disabled: Colors.grey,
              hovered: Colors.white.withOpacity(0.8),
              pressed: Colors.white.withOpacity(0.6),
            );
          }),
        ),
      ),

      After:

      Button(
        style: ButtonStyle(
          shape: WidgetStatePropertyAll(RoundedRectangleBorder(...)),
          backgroundColor: WidgetStateProperty.resolveWith((states) {
            if (states.isPressed) {
              return Colors.blue.shade900;
            }
            return Colors.blue;
          }),
          foregroundColor: WidgetStateProperty.resolveWith((states) {
            return WidgetStateExtension.forStates<Color>(
              states,
              disabled: Colors.grey,
              hovered: Colors.white.withOpacity(0.8),
              pressed: Colors.white.withOpacity(0.6),
            );
          }),
        ),
      ),
    • fix: Do not dismiss Scrollbar if it is still being pressed (#1077)

    • feat: Make Tab a widget that can be overridable (#1050)
      To create a custom Tab, you can now extend Tab:

      class MyCustomTab extends Tab {
        MyCustomTab({super.key, required super.text, required super.body});
      
        @override
        State<Tab> createState() => MyCustomTabState();
      }
      
      class MyCustomTabState extends TabState {
        @override
        Widget build(BuildContext context) {
          super.build(context);
          return ColoredBox(
            color: Colors.red,
            child: super.build(context),
          );
        }
      }

      Explore the TabState reference to see all the available methods you can override.

    • feat: Deprecate TabView.addIconData and TabView.addIconBuilder. Use TabView.newTabIcon instead.

    • fix: TabView.closeDelayDuration default value is now 1 second.

    New Contributors

    Full Changelog: v4.8.0...v4.9.0

    Open source →
    Release notes
    • fix: ¹ DropDownButton.closeAfterClick is now correctly applied. ² Added MenuFlyoutItem.closeAfterClick, which defaults to true. (#1016)

    • fix: MenuFlyoutSubItem does not close when pressed (#1037)

    • fix: Make ScaffoldPage opaque (#1048)

    • fix: Scroll issue in DatePicker. (#1054)

    • feat: Add NumberBox.textInputAction and NumberBox.onEditingComplete (#1063)

    • fix: NumberBox does not calls a rebuild when it is already building (#1064)

    • feat: Add Tab.color, Tab.selectedColor and Tab.outlineColor to TabView (#1068)

    • feat: Added NavigationView.onItemPressed callback, called when the item is on tap (#1067)

    • fix: Mark MenuFlyoutItem as disabled when .onPressed is null (#1074)

    • BREAKING feat: Removed ButtonState, ButtonStates and their related classes. Use WidgetStateProperty, WidgetState instead. (#1075) Before:

      Button(
        style: ButtonStyle(
          shape: ButtonState.all(RoundedRectangleBorder(...)),
          backgroundColor: ButtonState.resolveWith((states) {
            if (states.isPressed) {
              return Colors.blue.shade900;
            }
            return Colors.blue;
          }),
          foregroundColor: ButtonState.resolveWith((states) {
            return ButtonState.forStates<Color>(
              states,
              disabled: Colors.grey,
              hovered: Colors.white.withValues(alpha: 0.8),
              pressed: Colors.white.withValues(alpha: 0.6),
            );
          }),
        ),
      ),
      

      After:

      Button(
        style: ButtonStyle(
          shape: WidgetStatePropertyAll(RoundedRectangleBorder(...)),
          backgroundColor: WidgetStateProperty.resolveWith((states) {
            if (states.isPressed) {
              return Colors.blue.shade900;
            }
            return Colors.blue;
          }),
          foregroundColor: WidgetStateProperty.resolveWith((states) {
            return WidgetStateExtension.forStates<Color>(
              states,
              disabled: Colors.grey,
              hovered: Colors.white.withValues(alpha: 0.8),
              pressed: Colors.white.withValues(alpha: 0.6),
            );
          }),
        ),
      ),
      
    • fix: Do not dismiss Scrollbar if it is still being pressed (#1077)

    • feat: Make Tab a widget that can be overridable (#1050) To create a custom Tab, you can now extend Tab:

      class MyCustomTab extends Tab {
        MyCustomTab({super.key, required super.text, required super.body});
      
        @override
        State<Tab> createState() => MyCustomTabState();
      }
      
      class MyCustomTabState extends TabState {
        @override
        Widget build(BuildContext context) {
          super.build(context);
          return ColoredBox(
            color: Colors.red,
            child: super.build(context),
          );
        }
      }
      

      Explore the TabState reference to see all the available methods you can override.

    • feat: Deprecate TabView.addIconData and TabView.addIconBuilder. Use TabView.newTabIcon instead.

    • fix: TabView.closeDelayDuration default value is now 1 second.

    Open source →
  18. 4.8.7 08 Apr 2024
    Release notes
    • fix: A child of Button has an unbound height constraint. (#1039)
    • feat: Added DatePicker.fieldFlex to control the width proportion of each field. (#1053)
    • fix: Slider thumb is correct rendered when it's on the edges. (#1046)
    • feat: Added TabView.addIconBuilder (#1047)
    Open source →
  19. 4.8.6 06 Feb 2024
    Release notes
    • fix: Pop the menu flyout before than calling the close callback (#1009)
    • fix: Button.child is now vertically centered (#1011)
    • fix: Adjust Button's foreground color when hovered and pressed (#1012)
    • feat: Added .textController and .onTextChanged to EditableComboBox. (#1017)
    • fix: Do not show the selected indicator on the combo box popup if the current value is not present in the items list.
    Open source →
  20. 4.8.5 13 Jan 2024
    Release notes
    • MINOR BREAKING Renamed NavigationPaneThemeData.standard to NavigationPaneThemeData.fromResources, and removed the backgroundColor and inactiveColor properties (#1008)
    • fix: Adjust Slider animation (#1006)
    Open source →
  21. 4.8.4 05 Jan 2024
    Release notes
    • feat: Added Croatian localization support (#1004)
    • feat: Added Vietnamese localization support (#1005)
    Open source →
  22. 4.8.3 29 Dec 2023
    Release notes
    • fix: Offer a more clear exception info in PaneItemExpander (#990)
    • fix: ScaffoldPage.padding is correctly applied (#986)
    • fix: SliderThemeData.labelForegroundColor is correctly applied (#1000)
    • feat: NavigationView.onDisplayModeChanged (#998)
    Open source →
  23. 4.8.2 09 Dec 2023
    Release notes
    • fix: The MenuFlyoutSubItem in the DropDownButton was not displaying when hovered or pressed. (#964)
    • fix: Added enabled to PaneItem.copyWith (#980)
    • feat: Added barrierRecognizer to FlyoutController.showFlyout (#983)
    Open source →
  24. 4.8.1 27 Nov 2023
    Release notes
    • feat: Added NavigationPane.toggleable (#973)
    • feat: NumberBox.onTextChange (#972)
    • fix: TextBox.expands correctly expands on unbounded areas (#960)
    Open source →
  25. 4.8.0 25 Nov 2023
    Release notes

    What's Changed

    • Correctly paint buttons borders (#956)

    • MINOR BREAKING Removed ButtonStyle.border. Use ButtonStyle.shape instead:
      Before:

      Button(
        style: ButtonStyle(
          border: ButtonState.all(BorderSide(...)),
        ),
      ),

      Now:

      Button(
        style: ButtonStyle(
          shape: ButtonState.all(RoundedRectangleBorder(...)),
        ),
      ),
    • BREAKING Removed Chip and its related widgets.

    • BREAKING Removed PillButtonBar and its related widgets. Use CommandBar instead.

    • BREAKING Removed SplitButtonBar. Use SplitButton instead.

    • BREAKING Removed BottomSheet and its related widgets and functions.

    • BREAKING Removed Snackbar, showSnackbar and their related widgets. Use InfoBar and displayInfoBar instead.

    • fix: do not close InfoBar twice (#955)

    • feat: add Kurdish locale (#962)

    • fix: review debugFillProperties on widgets (#974)

    • fix: Date and Time pickers when localization is not English (#961)

    New Contributors

    Full Changelog: v4.7.7...v4.8.0

    Open source →
    Release notes
    • fix: Correctly paint buttons borders (#956)

    • MINOR BREAKING Removed ButtonStyle.border. Use ButtonStyle.shape instead: Before:

      Button(
        style: ButtonStyle(
          border: ButtonState.all(BorderSide(...)),
        ),
      ),
      

      Now:

      Button(
        style: ButtonStyle(
          shape: ButtonState.all(RoundedRectangleBorder(...)),
        ),
      ),
      
    • BREAKING Removed Chip and its related widgets.

    • BREAKING Removed PillButtonBar and its related widgets. Use CommandBar instead.

    • BREAKING Removed SplitButtonBar. Use SplitButton instead.

    • BREAKING Removed BottomSheet and its related widgets and functions.

    • BREAKING Removed Snackbar, showSnackbar and their related widgets. Use InfoBar and displayInfoBar instead.

    • fix: do not close InfoBar twice (#955)

    • feat: add Kurdish locale (#962)

    • fix: review debugFillProperties on widgets (#974)

    • fix: Date and Time pickers when localization is not English (#961)

    Open source →
  26. 4.7.7 30 Oct 2023
    Release notes

    What's Changed

    • fix: ProgressRing and ProgressBar now fit correctly the parent bounds (#942)
    • fix: TabView buttons was only rendered on hover. Now the buttons (add and scroll buttons) are always rendered.
    • fix: ComboboxItem correctly apply foreground color. Added ComboboxItem.enabled (#949)
    • Add a support for Cupertino Loclizations from GlobalCupertinoLocalizations, this can help fix some errors when using offical adaptive widgets and other cupertino widgets
    • Upgrade the scroll_pos dependecy to the latest version which is 0.5.0

    New Contributors

    • @freshtechtips made their first contribution in #946

    Full Changelog: v4.7.6...v4.7.7

    Open source →
    Release notes
    • fix: ProgressRing and ProgressBar now fit correctly the parent bounds (#942)
    • fix: TabView buttons was only rendered on hover. Now the buttons (add and scroll buttons) are always rendered.
    • fix: ComboboxItem correctly apply foreground color. Added ComboboxItem.enabled (#949)
    • Add a support for Cupertino Loclizations from GlobalCupertinoLocalizations, this can help fix some errors when using offical adaptive widgets and other cupertino widgets
    • Upgrade the scroll_pos dependecy to the latest version which is 0.5.0
    Open source →
  27. 4.7.6 08 Oct 2023
    Release notes
    • fix: items not aligned centered in ListTile. Added ListTile.contentAlignment and ListTile.contentPadding (#939)
    • fix: TreeViewItem no longer enforces a max height (#937)
    Open source →
  28. 4.7.5 24 Sep 2023
    Release notes
    • fix: do not enforce a tree view item on TreeView (#934)
    Open source →
  29. 4.7.4 15 Sep 2023
    Release notes
    • fix: tap on DatePicker day does not skip a day (#914)
    • fix: ensure PaneItemExpander's flyout is attached before using it (#857)
    • fix: expose more TextField properties on NumberBox (#933)
    • fix: expose more TextField properties on PasswordBox (#925)
    • fix: AutoSuggestBox.onOverlayVisibilityChanged now results in the correct state (#926)
    • fix: MenuFlyoutSubItem inherits the acrylic data from MenuFlyout (#932)
    • fix: MenuFlyoutSubItem inhertis its MenuFlyout parent decoration data (#931)
    • feat: Expose paneNavigationButtonIcon on NavigationPaneThemeData (#929)
    Open source →
  30. 4.7.3 17 Aug 2023
    Release notes
    • feat: Expose AutoSuggestBoxState (#912) With it, you can now control the AutoSuggestBox state, such as opening and closing the overlay. Use the .dismissOverlay method to close the overlay and .showOverlay to display it.

      Use the AutoSuggestBox.onOverlayVisibilityChanged callback to listen to overlay visibility changes.

    • fix: StickyNavigationIndicator now doesn't stop if another item interrupts the ongoing animation (36b82b)

    • fix: Render Combobox's elevation outside of the clipper (#896)

    • fix: Do not make items exclusive on NavigationView's body (#913)

    • fix: Expander.content has now its focus excluded when closed

    • fix: Fixed compile errors with Flutter 3.13.0 stable (#915)

    Open source →
  31. 4.7.2 07 Aug 2023
    Release notes
    • feat: Add Wifi and Bluetooth icons (#909)
    • feat: Add ListTile.cursor (#901)
    • feat: Add Tab.disabled (#904)
    • feat: Add NavigationPaneThemeData.overlayBackgroundColor, which is displayed on overlays, such as minimal and compact pane overlays (#903)
    • fix: Correctly remove tooltip as soon as the mouse leaves the widget (#905)
    • fix: Do not show PaneItem.infoBadge and PaneItem.trailing while the pane is transitioning (#906)
    • fix: NavigationView.onOpenSearch is called when autoSuggestBoxReplacement is pressed (c251600)
    • fix: AutoSuggestBox overlay is now only displayed after the user started typing (d95970a)
    Open source →
  32. 4.7.1 30 Jul 2023
    Release notes
    • Add vertical support to CommandBar. (#872)
    • Deprecated SplitButtonBar and its related widgets. Use SplitButton or SplitButton.toggle instead (#882, #411)
    • Implement BreadcrumbBar (#878)
    • Ensure all widgets use the correct debug checks (#883)
    • Expander header is sized dynamically (#523)
    • Added Expander.contentPadding and Expander.contentShape (#891)
    • Tooltips are dismissed as soon as the mouse leaves (#898)
    • Added FluentThemeData.selectionColor, which defaults to the accent color normal shade (#897)
    • Flyout reverse transition duration is properly set (#893)
    • Remove view padding when app bar is provided (#884)
    • NavigationAppBar.title is expanded to fit the entire width on top mode (#902)
    • AutoSuggestBox does not duplicate focus (#894)
    • StickyNavigationIndicator look-and-feel updated to match the native implementation (#380b49c)
    Open source →
  33. 4.7.0 07 Jul 2023
    Release notes
    • Add Slovak localization (#850)
    • Add AutoSuggestBox.itemBuilder callback builder, which builds the items inside the overlay (#869)
    • Add AutoSuggestBoxItem.semanticsLabel (#869)
    • Add ButtonState.forStates, a helper function to quickly resolve values for each button state (#875)
    • Slider label color is solid (#847)
    • BREAKING Removed .disabledColor, uncheckedColor, .checkedColor and .borderInputColor from FluentThemeData. Use the values from theme resources instead (1295b6)
    • BREAKING To match the native implementation, ToggleSwitch.thumb and .thumbBuilder have been renamed to .knob and .knobBuilder, respectively. DefaultToggleSwitchThumb was renamed to DefaultToggleSwitchKnob (e15e89d)
    • Added CheckboxThemeData.foregroundColor, RadioButtonThemeData.foregroundColor and ToggleSwitchThemeData.foregroundColor, which, by default, reacts if the inputs are disabled or not (#861)
    • ToggleSwitch correctly behaves as disabled when onChanged is null (4b5afb5)
    • Add PaneItemExpander.initiallyExpanded (#864)
    • Add NumberFormBox (#862)
    • PaneItem.onTap from PaneItemExpander.items, when displayed in popup, are now correctly invoked (#859)
    • Navigating through the Combobox items on web now works properly (#757)
    • TreeViewItem, if selection mode is single, gets selected when focused with the keyboard (#835)
    • In multiple selection mode, TreeView's built-in checkbox now doesn't receive focus. It can now be focused by invoking it with the keyboard (#877)
    • Enabled click on DatePicker and TimePicker (#6)
    • DatePicker.endDate.year is taken into account when displaying the years (#874)
    • DatePicker's day field is now correctly selected (d152dc)
    • DatePicker and TimePicker are correctly fit into the navigator bounds (711390)
    • Add TreeView.gesturesBuilder and TreeViewItem.gestures (#851)
    • Improved overall Semantics. Now, not every input is treated as a button (2fee45)
    • Deprecated all mobile widgets: BottomSheet, Snackbar, Chip and PillButtonBar - and all their related widgets. (c1cfe491)
    • BREAKING Removed previously deprecated fields (ee601649):
      • EditableComboboxFormField.value. Use EditableComboboxFormField.initialValue instead
      • DatePicker.startYear. Use DatePicker.startDate instead
      • DatePicker.endYear. Use DatePicker.endDate instead
      • TextButton. Use HyperlinkButton instead
      • TabView.wheelScroll. It is no longer used
      • ThemeData. Use FluentThemeData instead
    Open source →
  34. 4.6.2 29 May 2023
    Release notes
    • Fix Urdu localization (#849)
    Open source →
  35. 4.6.1 15 May 2023
    Release notes
    • Fix incompatibilities with Flutter 3.10
    Open source →
  36. 4.6.0 10 May 2023
    Release notes
    • BREAKING Removed FluentApp.useInheritedMediaQuery
    • Upgrade the scroll_pos dependency (from @WinXaito) to version v0.4.0 (#831)
    • Added support for Urdu language (#832)
    Open source →
  37. 4.5.1 06 May 2023
    Release notes
    • Do not unfocus the auto suggest box on clear (#816)
    • Review all the inputs margins and inputs (#799)
    • HyperlinkButton now uses the correct color in dark mode (#817)
    • DatePicker, TimePicker and all other overlay widgets are now positioned correctly if there are multiple navigators (#817)
    • Added PasswordFormBox (#811)
    • DateTime.startYear and DateTime.endYear are now deprecated. Use DateTime.startDate and DateTime.endDate instead. (#687)
    • Added .decoration, .foregroundDecoration, .highlightColor, .unfocusedColor, .keyboardAppearance, .textAlign, .textAlignVertical to PasswordBox (#820)
    • Do not block text style inheritance in widgets (#823)
    • NavigationView now works correctly in top mode (#821)
    • Add showDialog.dismissWithEsc (#826)
    Open source →
  38. 4.5.0 17 Apr 2023
    Release notes
    • MINOR BREAKING Remove default value of backButtonDispatcher when using FluentApp.router (#803)
    • Add parameters onTapDown and onTapUp on all buttons. (#795)
      • Breaking: if you use the abstract class BaseButton, these two parameters are now required
    • Add PasswordBox widget (#795)
    • Improve example in Navigation/NavigationView in app. (#796)
    • Added Tamil language localization. (#798)
    • BREAKING CHANGE TextButton is renamed to HyperlinkButton and ButtonThemeData.textButtonStyle is renamed to ButtonThemeData.hyperlinkButtonStyle (#802)
    • Added .notificationPredicate, .scrollbarOrientation, .pressDuration and .minOverscrollLength to Scrollbar (#809)
    • Rebuild the TreeView elements on item invocation (#810)
    Open source →
  39. 4.4.2 29 Mar 2023
    Release notes
    • Add NumberBox widget. (#560 #771 #789)

    • Add support for routerConfig to FluentApp.router (#781)

    • Add source code for Show InfoBar in example application. (#785)

    • Make color optional in FluentApp.router. (#782)

    • Fix TabView scroll (the item count was not correctly set) and now the scroll event is not propagated to the parent. (#772)

    • Do not calculate the position of the flyout if the position parameter is provided. (#764)

    • Add source code for Surfaces/CommandBar in example application (#766)

    • Do not enforce a max height on PaneItem (#762)

    • Add Greek localization (#761)

    • Add NavigationState.compactOverlayOpen (#758):

      final key = GlobalKey<NavigationState>();
      
      NavigationView(key: key);
      
      final isCompactModeOpen = key.currentState?.compactOverlayOpen ?? false;
      
    • TabView lazy loading (#751)

    • Added Bangla localization (#786)

    • Correctly position the flyouts and tooltips on a multi navigator context (#780)

    • Allow all kinds of menu flyout widgets on DropDownButton (#775)

    • Added CommandBarCard.borderColor

    Open source →
  40. 4.4.1 07 Mar 2023
    Release notes
    • Dynamically adding/removing items in NavigationPane (#744)

    • Fix example application was showing window icons twice on transparency change and maximizing

    • Add TextFormBox.initialValue (#749)

    • Add PaneItem.enabled (#748)

    • Add Thai localization (#750)

    • FocusTraversalGroup is no longer added above paneBodyBuilder (#700)

    • BREAKING NavigationView.paneBodyBuilder now takes two arguments (#700) Before:

      NavigationView(
        paneBodyBuilder: (child) {
          return child;
        }
      ),
      

      Now:

      NavigationView(
        paneBodyBuilder: (item, child) {
          return child;
        }
      )
      
    • Use correct height and padding on TextBox (#754)

    • Updated TextBox cursor to match the native implementation (#754)

    • TextBox state is now updated correctly when focused (#754)

    Open source →
  41. 4.4.0 24 Feb 2023
    Release notes
    • TabView macos shortcuts (#728)
    • TabView focus on children now works properly (#648)
    • TabView colors now follow the Win UI 3 theme resources (#730)
    • Add myanmar localization (#682)
    • Fix ContentDialog copy code (#735)
    • TextBox rework:
      • BREAKING Removed .initialValue. Use TextEditingController.text instead
      • BREAKING Removed .header and .headerStyle. Use InfoLabel instead
      • BREAKING Removed .outsidePrefix, .outsidePrefixMode, .outsideSuffix, .outsideSuffixMode
      • BREAKING Removed .minHeight and .iconButtonThemeData
      • AutoSuggestBox popup is now part of the text box tap region (#698)
      • FluentTextSelectionToolbar now follows global typography (#712)
    • Attach flyout to target at build time (#743)
    Open source →
  42. 4.3.0 08 Feb 2023
    Release notes
    • Correctly calculate the padding around the flyout on automatic mode

    • Possibility to supply transparent colors to the barrier (#702)

    • Correctly assign the current pane mode to PaneItemExpander (#707)

    • showFlyout.dismissOnPointerMoveAway now takes the whole flyout box into consideration

    • MINOR BREAKING Replaced ContentManager and ContentSizeInfo with Flyout Before:

      final size = ContentSizeInfo.of(context).size;
      

      Now:

      final size = Flyout.of(context).size;
      

      With it, it's also possible to have multiple info about the current open flyout. Sub-menus also have their own flyout instance. To close the current flyout, use Flyout.of(context).close();

    • Added option to open DropDownButton flyout programatically (#723)

      final dropdownKey = GlobalKey<DropDownButtonState>();
      
      DropDownButton(
        key: dropdownKey,
        ...
      );
      
      dropdownKey.currentState?.open(...); // opens the flyout
      
      final isOpen = dropdownKey.currentState?.isOpen ?? false; // checks if the flyout is open
      
    • BREAKING Removed deprecated memebers: DropDownButtonItem and DropDownButton.buttonStyle (#724)

    • ThemeData is depreacted. Use FluentThemeData instead (#722)

    • BREAKING MenuFlyoutSubItem.items now requires a function Before:

      MenuFlyoutSubItem(
        items: [...]
      ),
      

      After:

      MenuFlyoutSubItem(
        items: (context) {
          // You can call Flyout.of(context).close(), for example
          return [...]
        },
      )
      
    Open source →
  43. 4.2.0 26 Jan 2023
    Release notes
    • Flyouts rework (#690):

      Flyouts were reworked to match the design and behavior of native WinUI 3

      BREAKING Removed Flyout widget. To replace it, FlyoutTarget and FlyoutController were created. FlyoutTarget works like a target, which the given controller will use to display the flyout


      Migration guide:

      Before:

      final controller = FlyoutController();
      
      Flyout(
        controller: controller,
        placement: ...,
        position: ...,
        verticalOffset: ...,
        onOpen: ...,
        onClose: ...,
        child: Button(
          onPressed: controller,
          child: Text('Tap me'),
        ),
      ),
      

      Now:

      final controller = FlyoutController();
      
      FlyoutTarget(
        controller: controller,
        child: Button(
          onPressed: _showFlyout,
          child: Text('Tap me'),
        ),
      ),
      
      void _showFlyout() async {
        await controller.showFlyout(
          barrierDismissible: ...,
          dismissWithEsc: ..., // NEW
          dismissOnPointerMoveAway: ..., // NEW
          placementMode: ...,
          autoModeConfiguration: ..., // NEW
          forceAvailableSpace: ..., // NEW
          shouldConstrainToRootBounds: ..., // NEW
          additionalOffset: ...,
          margin: ..., // NEW
          barrierColor: ...,
          navigatorKey: ..., // NEW
          transitionBuilder: ..., // NEW
          transitionDuration: ..., // NEW
          builder: (context) => FlyoutContent(...),
        );
      }
      

      Now, it's possible to dismiss the flyout by tapping the barrier (barrierDismissible), pressing the ESC keyboard key (dismissWithEsc) and by moving the cursor (pointer) away from the flyout (dismissOnPointerMoveAway - defaults to false);

      Automatic mode is finally implemented, and it's the default mode. By setting autoModeConfiguration, it's possible to customize the preferred flyout placement. If flyout doesn't meet the placement conditions, it decides where it fits the best.

      forceAvailableSpace determines whether the flyout size should be forced the available space according to the attached target. It's useful when the flyout is large but can not be on top of the target. NavigationView's top navigation mode now uses it by default on pane items overflow.

      shouldConstrainToRootBounds determines whether the flyout should fit the root bounds - usually the window bounds. If false, the flyout will be able to overflow the screen on all sides. Defaults to true

      margin determines the margin of the flyout to the root. additionalOffset determines the margin of the flyout to the target.

      It's now possible to assign a custom transition to the flyout by providing transitionBuilder and transitionDuration. By default, a light slide-fade transition is used, but it can be highly customizable to fit your needs. It provides the current placement mode - since automatic mode may change it at layout time. DropdownButton uses it to create its slidethrough transition.

      position and placement were replaced by placementMode, which gives horizontal and vertical options of placement, at all screen alignments. It's also possible to use it in a right-to-left context by using placementMode.resolve(Directionality.of(context))

      Use position to display the flyout anywhere in the screen. It's useful to create context menus

    • Added support for Flutter 3.7 (#568)

    • Added TextBox.magnifierConfiguration, TextBox.spellCheckConfiguration and TextBox.onTapOutside

    Open source →
  44. 4.1.5 20 Jan 2023
    Release notes
    • Add AutoSuggestBox.maxPopupHeight (#677)
    • Fix assertion in NavigationViewState if no pane was currently selected (#678)
    • Make NavigationView.paneBodyBuilder responsible for state management of the widget it returns, allowing paneBodyBuilder to return an IndexedStack (common use case) (#679)
    • Added support for Belarusian language (#686)
    • Added missing German translation for minute, hour, day, month, and year
    Open source →
  45. 4.1.4 13 Jan 2023
    Release notes
    • Avoid overflow in DatePicker and TimePicker popup (#663)
    • Ensure sticky indicator is mounted before updating (#670)
    • Date and Time pickers popup are now positioned correctly in RTL mode (#675)
    • It's now possible to navigate through AutoSuggestBox items by long pressing arrow up and down keys
    • Do not clear focus scope after selecting an item in AutoSuggestBox (#671)
    • AutoSuggestBox's trailingIcon now comes after the close button
    • MINOR BREAK TextBox.clearGlobalKey was removed, since it was not used
    • Add AutoSuggestBox.unfocusedColor and TextFormBox.unfocusedColor
    • Implement displayInfoBar, which shows an info bar as an overlay (#673)
    • Implement ThemeData.extensions (#674)
    Open source →
  46. 4.1.3 29 Dec 2022
    Release notes
    • FlyoutListTile can be used outside of a flyout (#650)
    • Add uk localization (#647)
    • Add swedish localization (#655)
    • Add key parameter to NavigationPaneItem and all its instances (#656)
    • Ensure fontFamily is inherit in some widgets (654)
    • Add Flyout.navigatorKey (#538)
    • Add Card.borderColor (#643)
    Open source →
  47. 4.1.2 12 Dec 2022
    Release notes
    • PageHeader now gives appropriate bounds to its commandBar (#642)
    • Ensure NavigationView body state is not lost when resizing window
    • Ensure TabView' tabs' state are not lost when changing selected tab (#607)
    • Do not block text field tap (#343)
    • Do not duplicate trailing in FlyoutContent (#487)
    Open source →
  48. 4.1.1 08 Dec 2022
    Release notes
    • Ensure acrylic is updated only if it's mounted (#634)
    • Ensure the provided startYear and endYear in DateTime are used properly (#627)
    • Fix left arrow key not moving to parent item on collapsed TreeViewItem (#632)
    • Added NavigationPane.scrollBehavior (#640)
    • Added CommandBarCard.borderRadius (#641)
    • Ensure combobox scroll controller has a client attached before using it (#620)
    • Correctly use TextFormBox.initialValue
    • Added TreeViewState.toggleItem, which toggles the item expanded state (#493)
    • Ensure NavigationView pane items are brought into view when selected
    Open source →
  49. 4.1.0 26 Nov 2022
    Release notes
    • Fixed TreeView selection state behavior for items that are not expanded (#578)
    • Added support for Romanian language (#602)
    • Ensure the body state in NavigationView is properly preserved (#607)
    • BREAKING Renamed ExpanderState.open to ExpanderState.isExpanded
    • The same identifier is no longer used for every Expander (#596)
    • Ensure the TabView scroll controller has clients before using it (#615)
    • TabView now waits a time to resize after closed (#617)
    • ToggleButton border width is uniform (#610)
    Open source →
  50. 4.0.3 22 Oct 2022
    Release notes
    • NavigationView scrollbar can now be dragged (#472)
    • PaneItemHeader can now be used inside a PaneItemExpander (#575)
    • InfoBadge no longer overflows when transitioning from compact mode to open mode in NavigationView (#588)
    Open source →
  51. 4.0.3+1 03 Nov 2022
    Release notes
    • Update documentation
    Open source →
  52. 4.0.2 13 Oct 2022
    Release notes
    • Add NavigationView.paneBodyBuilder for customization of widget built for body of pane. (#548)
    • Fixed NavigationAppBar unnecessary leading icon when no pane is provided in NavigationView (#551)
    • Added NavigationView.minimalPaneOpen and, with it, the possibility to open minimal pane programatically (#564)
    • Assign an index to pane item expanders (#566)
    • Update NavigationView compact mode transition
    • TreeView updates (#555):
      • BREAKING Added TreeViewItemInvokeReason parameter to TreeView.onItemInvoked and TreeViewItem.onInvoked.
      • Fix clearing out selection state on initial state build in certain cases for a single selection mode tree view.
      • Fix single selection mode to properly deselect hidden child items when selecting a collapsed parent item.
      • Add TreeView.includePartiallySelectedItems so that items who have children with a mixed selection state will be included in the onSelectionChanged callback.
      • Add TreeView.deselectParentWhenChildrenDeselected optional behavior so that parent items can remain selected when all of their children are deselected.
      • Add TreeViewItem.setSelectionStateForMultiSelectionMode helper method and [TreeViewItem].selectedItems extension method, to make it easier for application code to programmatically change selection state of items in a multi-selection mode tree view.
    • Added support for Uzbek language
    Open source →
  53. 4.0.1 27 Sep 2022
    Release notes
    • PaneItemAction.body is no longer required (#545)
    • Added DropDownButton.onOpen and DropDownButton.onClose callbacks (#537)
    • Ensure MenuFlyoutItem.onPressed is called after the flyout is closed if DropDownButton.closeAfterClick is true (#520)
    • Ensure the TimePicker and DatePicker popups will fit if the screen is small (#544)
    • Do not apply padding to NavigationAppBar.leading (#539)
    • Added AutoSuggestBox.noResultsFoundBuilder (#542)
    • Added AutoSuggestBox.inputFormatters (#542)
    • Added support for Hebrew language
    Open source →
  54. 4.0.0 25 Sep 2022
    Release notes
    • BREAKING Removed NavigationBody. Use PaneItem.body instead (#510/#531): Before:

      NavigationView(
        pane: NavigationPane(
          items: [
            PaneItem(icon: WindowsIcon(WindowsIcons.add)),
            PaneItem(icon: WindowsIcon(WindowsIcons.add)),
            PaneItem(icon: WindowsIcon(WindowsIcons.add)),
          ],
        ),
        content: NavigationBody(
          children: [
            _Item1(),
            _Item2(),
            _Item3(),
          ],
        ),
      ),
      

      Now:

      NavigationView(
        ...
        pane: NavigationPane(
          items: [
            PaneItem(
              icon: WindowsIcon(WindowsIcons.add),
              body: _Item1(),
            ),
            PaneItem(
              icon: WindowsIcon(WindowsIcons.add),
              body: _Item2(),
            ),
            PaneItem(
              icon: WindowsIcon(WindowsIcons.add),
              body: _Item3(),
            ),
          ],
        ),
      ),
      

      Or if you don't have a pane, you can use the content like the following:

      NavigationView(
        content: ScaffoldPage(
          header: PageHeader(
            title: titleRow,
          ),
          content: child,
        ),
      ),
      

      either one attribute of pane or content must not be null

      Use NavigationView.transitionsBuilder to create custom transitions

    • Added PaneItem.onTap (#533)

    • Compact pane is no longer toggled when item is selected (#533). To toggle it programatically, use NavigationViewState.toggleCompactOpenMode when an item is tapped

    • Dynamic header height for open pane (#530)

    • Fixes memory leaks on NavigationView

    • TreeView updates:

      • All items of the same depth level now have the same indentation. Before, only items with the same parent were aligned.

      • The hitbox for the expand icon of each item now uses the item's full height and is three times wider than the actual icon. This corresponds to the implementation in the explorer of Windows 10/11.

      • You can now choose whether the items of a TreeView should use narrow or wide spacing.

      • Do not invoke the tree view item on secondary tap (#526)

      • BREAKING TreeView.onSecondaryTap is now a (TreeViewItem item, TapDownDetails details) callback: Before:

        TreeView(
          ...,
          onSecondaryTap: (item, offset) async {}
        ),
        

        Now:

        TreeView(
          ...,
          onSecondaryTap: (item, details) {
            final offset = details.globalPosition;
          },
        )
        
      • Expand/collape items with right and left arrow keys, respectively (#517)

      • Added TreeView.onItemExpandToggle and TreeViewItem.onExpandToggle (#522)

    • BREAKING AutoSuggestBox dynamic type support (#441):

      Before:

      AutoSuggestBox(
        items: cats.map((cat) {
          return AutoSuggestBoxItem(
            value: cat,
            onFocusChange: (focused) {
              if (focused) debugPrint('Focused $cat');
            }
          );
        }).toList(),
        onSelected: (item) {
          setState(() => selected = item);
        },
      ),
      

      Now:

      AutoSuggestBox<String>(
        items: cats.map((cat) {
          return AutoSuggestBoxItem<String>(
            value: cat,
            label: cat,
            onFocusChange: (focused) {
              if (focused) debugPrint('Focused \$cat');
            }
          );
        }).toList(),
        onSelected: (item) {
          setState(() => selected = item);
        },
      ),
      
    Open source →
  55. 4.0.0-pre.4 02 Sep 2022 pre-release
    Release notes
    • DisableAcrylic now fully disable transparency of its decendents Acrylics (#468)
    • Do not interpolate between infinite constraints on TabView (#430)
    • Do not rebuild the TimePicker popup when already rebuilding (#437)
    • ToggleSwitch updates:
      • Use the correct color for DefaultToggleSwitchThumb (#463)
      • Added ToggleSwitch.leadingContent, which positions the content before the switch (#464)
      • Added ToggleSwitch.thumbBuilder, which builds the thumb based on the current state
    • Added TextChangedReason.cleared, which is called when the text is cleared by the user in an AutoSuggestBox (#461)
    • Call AutoSuggestBox.onChanged when an item is selected using the keyboard (#483)
    • Tooltip overlay is now ignored when hovered (#443)
    • Do not add unnecessary padding in DropdownButton (#475)
    • ComboBox updates:
      • BREAKING Renamed Combobox to ComboBox
      • BREAKING Renamed ComboboxItem to ComboBoxItem
      • BREAKING Renamed ComboBox.backgroundColor to ComboBox.popupColor
      • Implement EditableComboBox, a combo box that accepts items that aren't listed (#244)
      • ComboBox.isExpanded: false now correctly sets the button width (#382)
      • ComboBox's items height are correctly calculated, as well as initial scroll offset (#472)
      • BREAKING ComboBox.disabledHint was renamed to ComboBox.disabledPlaceholder
      • Added ComboBoxFormField and EditableComboBoxFormField (#373)
      • ComboBox.comboBoxColor is now correctly applied (#468)
      • ComboBox popup can't be opened if disabled
    • Implemented PaneItemExpander (#299)
    • TimePicker and DatePicker popup now needs a minimum width of 260 (#494)
    • Correctly align NavigationAppBar content (#494)
    • BREAKING Added InfoLabel.rich. InfoLabel is no longer a constant contructor (#494)
    • Always add GlobalMaterialLocalizations above ReorderableListView (#492)
    • BREAKING Removed ContentDialog.backgroundDismiss. Use showDialog.barrierDismissable (#490)
    • Reviewed focus (#496)
      • DatePicker and TimePicker now show the focus highlight. Their popup now can be controlled using the keyboard
      • NavigationBody now uses a FocusTraversalGroup to handle focus This means the the content of the body will be fully traversed before moving on to another widget or group of widgets. Learn more
      • TreeViewItem now shows the focus highlight. They can also be selected using the keyboard
      • Expander now shows the focus highlight
    • Progress Indicators velocity is no longer affected by device frame rate (#502)
    • Added AutoSuggestBox.enabled (#504)
    • Correctly keep the NavigationView animation state (cf0fae1 ,bd89ba6)
    • Calculate selected for all parents as soon as the TreeView is built
    Open source →
  56. 4.0.0-pre.3 13 Aug 2022 pre-release
    Release notes
    • NavigationView mode fixes:

      • When top overflow menu is opened, PaneItemHeader no longer throws an unsupported error
      • When on top mode, PaneItemHeader is properly aligned to the other items.
      • Added NavigationPaneThemeData.headerPadding, which is applied to PaneItemHeader on open, compact and minimal mode. It defaults to 10 pixels at the top
      • BREAKING PaneItem.getPropertyFromTitle is now widget.getProperty:

      Before: getPropertyFromTitle<TextStyle>()

      Now: title.getProperty<TextStyle>()

      This was changed because the properties of PaneItemHeader needed to be accessed, but the old version only supported to get the properties of PaneItem.title. It can be called on a Text, RichText or in an Icon widget

      • InheritedNavigationView is now accessible on the top overflow menu
      • Added NavigationPaneThemeData.selectedTopTextStyle and NavigationPaneThemeData.unselectedTopTextStyle, which is applied to the items on top mode
      • Fixed content focus on minimal mode
      • Updated default transitions for top mode: HorizontalSlidePageTransition
    • Fix incorrect translation of TimePicker in Traditional Chinese.

    • Added ScaffoldPage.resizeToAvoidBottomInset (#444)

    • Consider view padding for NavigationAppBar

    • Scrollbar updates (#356):

      • Correctly use backgroundColor to display the track color
      • Added padding and hoveringPadding
      • Check if animation is disposed before using it (#446)
    • Update AutoSuggestBox (#450):

      • Added .enableKeyboardControls. When true, items can be selected using the keyboard (#19)
      • Added .sorter, which lets you set a custom sort function for the suggestions. AutoSuggestBox.defaultItemSorter is used by default
      • Overlay's height is now correctly calculated based on the screen size. It no longer overlaps the screen. viewPadding is also taken into consideration
      • Close the overlay if the textbox width is changes (#456)
      • .items can be dynamically loaded (#387)
      • BREAKING .items is now a List<AutoSuggestBoxItem>: Before:
      AutoSuggestBox(
        items: [
          'Cat',
          'Dog',
          'Bird',
          'Horse',
        ],
        ...
      ),
      

      Now:

      AutoSuggestBox(
        items: [
          'Cat',
          'Dog',
          'Bird',
          'Horse',
        ].map((animal) {
          return AutoSuggestBoxItem(
            value: animal, // this takes a String
            child: Text('Animal $animal'), // this takes a Widget. If null, value is displayed as a text
            onFocusChange: (focused) {
              // this is called when the item is focused using the keyboard arrow keys
              if (focused) debugPrint('Focused animal $animal');
            },
            onSelected: () {
              // this is called when the item is selected
              debugPrint('Selected animal $animal');
            }
          );
        }).toList(),
        ...
      )
      
    • Combobox updates (#454):

      • Popup size is now correctly calculated (#413)
      • Correctly clip the popup while performing the animation (#379)
    • Correctly check if a locale is supported (#455)

    Open source →
  57. 4.0.0-pre.2 23 Jul 2022 pre-release
    Release notes
    • Remove whitespace on ContentDialog if title is omitted (#418)

    • Apply correct color to the Date and Time Pickers button when selected (#415, #417)

    • Expose more useful properties to AutoSuggestBox (#419)

    • BREAKING PopupContentSizeInfo was renamed to ContentSizeInfo

    • Reworked ListTile (#422):

      • BREAKING Removed TappableListTile
      • Added support for single and multiple selection. Use ListTile.selectable (#409)
      • Added focus support
      • Use the Win UI design
    • Reviewed animation durations (#421)

      • BREAKING Removed .animationDuration and .animationCurve from ScrollbarThemeData
      • Added expandContractAnimationDuration and contractDelay to ScrollbarThemeData
    • NavigationPaneSize constraints are now correctly applied when in open mode (#336)

    • NavigationIndicator can't be invisble anymore when animation is stale (#335)

    • Updated TabView:

      • BREAKING Removed TabView.bodies. Now, Tab.body is used. Before

        TabView(
          tabs: [
            Tab(text: Text('Tab 1')),
            Tab(text: Text('Tab 2')),
          ],
          bodies: [
            Tab1Body(),
            Tab2Body(),
          ],
        ),
        

        Now:

        TabView(
          tabs: [
            Tab(
              text: Text('Tab 1'),
              body: Tab1Body(),
            ),
            Tab(
              text: Text('Tab 2'),
              body: Tab2Body(),
            ),
          ],
        ),
        
      • Updated TabView tabs' constraints and padding

      • Fixed tab width when TabWidthBehavior is compact

      • FlutterLogo is no longer the default tab Icon

    • DropDownButton menu is now sized correctly according to the screen size

    • If there isn't enough space to display the menu on the preferred position, Flyout will display on the opposite position (#435)

    Open source →
  58. 4.0.0-pre.1 30 Jun 2022 pre-release
    Release notes
    • Exposed private properties that makes it easier to create custom panes for NavigationView (#365):

      • kCompactNavigationPaneWidth
      • kOpenNavigationPaneWidth
      • NavigationPane.changeTo
      • PaneItem.getPropertyFromTitle
    • PaneScrollConfiguration is now applied to custom pane on NavigationView

    • Added NavigationViewState.displayMode. It results in the current display mode used by the view, including the automatic display mode (#360):

      // Define the key
      final key = GlobalKey<NavigationViewState>();
      
      NavigationView(
        // pass the key to the view
        key: key,
        ...,
      )
      
      // Get the current display mode. Note that, in order to find out the automatic display mode,
      // the widget must have been built at least once
      final PaneDisplayMode currentDisplayMode = key.currentState.displayMode;
      
    • The app bar action no longer overflow when minimal pane/compact overlay is open (#361)

    • Update AutoSuggestBox:

      • It now uses Acrylic, but it can be disabled using DisableAcrylic
      • TextChangedReason.suggestionChoosen is now called properly
    • Updated TextBox:

      • TextBox colors were updated to match the Win 11 design.
      • Fluent Text Selection Control now make use of Acrylic. Its items were also updated
    • Updated pickers (#406):

      • If selected is null, a placeholder text is shown (#306)
      • Added new localization messages: hour, minute, AM, PM, month, dayand year.
      • BREAKING Removed .hourPlaceholder, .minutePlaceholder, .amText, .pmText from TimePicker. It was replaced, respectivelly, by the hour, minute, AM, PM localization messages
      • On DatePicker, it's now possible to change the order of the fields:
      DatePicker(
        ...,
        fieldOrder: [
          DatePickerField.day,
          DatePickerField.month,
          DatePickerField.year,
        ],
      )
      

      The fields are ordered based on the current locale by default

      • On DatePicker, the day and year fields are now formatted based on the current locale (getDateOrderFromLocale)
    • Update Slider (#405):

      • Added .thumbRadius and .trackHeight to SliderThemeData
      • The active track now isn't taller than the inactive track
    Open source →
  59. 4.0.0-pre.0 10 Jun 2022 pre-release
    Release notes
    • Show menu button on automatic minimal display mode (#350)

    • BREAKING Map<ShortcutActivator, Intent>? is now the typed used on FluentApp.shortcuts (#351)

    • TextBox review (#352):

      • Added .initialValue, .selectionControls, .mouseCursor, .textDirection, .scribbleEnabled and .enableIMEPersonalizedLearning to TextBox
      • Added AutoFillClient to TextBox
      • Added UnmanagedRestorationScope to TextFormBox
    • Added AutoSuggestBox.form, that uses TextFormBox instead of TextBox (#353)

    • Do not overflow when text is too long on Chip (#322)

    • Add RTL support for Chip

    • Card updates:

      • Updated card's background colors
      • BREAKING Removed Card.elevation
      • Added Card.margin, which is the margin around the card
    • Updated Combobox and Button designs

    • Updated NavigationPane behaviour. Now, if the header is null, the space it should have taken will be removed from the pane (display mode affected: minimal, open only) (#359)

    • Reviewed DatePicker and TimePicker (#357)

      • Correctly apply dimensions and positions to both pickers
      • Update the picker popup style and behavior
    • Colors Update (#368):

      • Added ResourceDictionary, which provides default colors to be used on components

      • (forms) Updated Combobox style. It now uses Acrylic on the combobox popup menu

      • (buttons) Updated Button, FilledButton, IconButton and TextButton styles

      • (toggleable inputs) Updated Checkbox, Chip, RadioButton, RatingBar, ToggleButton and ToggleSwitch

        • BREAKING Updated Slider:

          • SliderThemeData.thumbColor, SliderThemeData.activeColor and SliderThemeData.inactiveColor now are of type ButtonState<Color?>?, which handles the button color on different states. SliderThemeData.disabledThumbColor, SliderThemeData.disabledActiveColor and SliderThemeData.disabledInactiveColor were removed
          • Before:
          SliderThemeData(
            thumbColor: Colors.green,
          ),
          
          • Now:
          SliderThemeData(
            // Apply Colors.green for all button states. Instead you can use ButtonState.resolveWith to use different values according to the current state
            thumbColor: ButtonState.all(Colors.green),
          ),
          
      • (navigation) Updated NavigationView, PaneItem and ScaffoldPage

        • Updated TabView and its tabs styles. A FocusBorder is now used to display the focus highlight of the tabs
        • All combinations of BorderRadius can now be used on FocusBorder
      • (surfaces) Updated Card, ContentDialog, InfoBar, Expander, Flyout and `Divider``

        • Added InfoBar.isIconVisible
      • (indicators) Updated ProgressBar, ProgressRing and InfoBadge

      • (other) Added helper methods for AccentColor: AccentColor.defaultBrushFor, AccentColor.secondaryBrushFor and AccentColor.tertiaryBrushFor

      • Polish translation added

    Open source →
  60. 3.12.0 13 May 2022
    Release notes
    • Add support for Flutter 3.0 (Fixes #186, #327)
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive