fluent_ui

Implements Microsoft's WinUI3 in Flutter.

BSD-3-CLAUSE License

Stars
2.9K
Committers
98

Bot releases are hidden (Show)

fluent_ui - v4.9.1 - Flutter 3.24 Latest Release

Published by bdlukaa 2 months ago

  • 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

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.9.0...v4.9.1

fluent_ui - 4.9.0

Published by bdlukaa 4 months ago

  • 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: https://github.com/bdlukaa/fluent_ui/compare/v4.8.0...v4.9.0

fluent_ui - v4.8.0 - Bye deprecated

Published by bdlukaa 11 months ago

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: https://github.com/bdlukaa/fluent_ui/compare/v4.7.7...v4.8.0

fluent_ui - v4.7.7

Published by bdlukaa 12 months ago

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

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.6...v4.7.7

fluent_ui - v4.7.6

Published by bdlukaa about 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.4...v4.7.6

fluent_ui - Bug fixes

Published by bdlukaa about 1 year ago

  • 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)
fluent_ui - Flutter 3.13

Published by bdlukaa about 1 year ago

  • 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)
  • 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)
  • 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)

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.0...v4.7.3

fluent_ui - v4.7.0

Published by bdlukaa over 1 year ago

  • 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

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.6.0...v4.7.0

fluent_ui - Flutter 3.10.0

Published by bdlukaa over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.2...v4.6.0

fluent_ui - NumberBox and stuff

Published by bdlukaa over 1 year ago

  • 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

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.1...v4.4.2

fluent_ui - v4.4.1

Published by bdlukaa over 1 year ago

  • 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)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.0...v4.4.1

fluent_ui - v4.4.0

Published by bdlukaa over 1 year ago

4.4.0

  • 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)

4.3.0

  • 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 [...]
      },
    )
    

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.2.0...v4.4.0

fluent_ui - v4.2.0

Published by bdlukaa over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.4...v4.2.0

fluent_ui - 4.1.4

Published by bdlukaa almost 2 years ago

What's Changed

  • 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)
  • 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 remove, 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)

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.2...v4.1.4

fluent_ui - 4.1.2

Published by bdlukaa almost 2 years ago

  • 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)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.1...v4.1.2

fluent_ui - 4.1.1

Published by bdlukaa almost 2 years ago

  • 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
  • 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)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.3...v4.1.1

fluent_ui - v4.0.3

Published by bdlukaa almost 2 years ago

  • 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)

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.2...v4.0.3

fluent_ui - 4.0.2

Published by bdlukaa about 2 years ago

  • 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

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.1...v4.0.2

fluent_ui - 4.0.1

Published by bdlukaa about 2 years ago

  • 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)

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.0...v4.0.1

fluent_ui - 4.0.0

Published by bdlukaa about 2 years ago

  • BREAKING Removed NavigationBody. Use PaneItem.body instead (#510/#531):
    Before:

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

    Now:

    NavigationView(
      ...
      pane: NavigationPane(
        items: [
          PaneItem(
            icon: Icon(FluentIcons.add),
            body: _Item1(),
          ),
          PaneItem(
            icon: Icon(FluentIcons.add),
            body: _Item2(),
          ),
          PaneItem(
            icon: Icon(FluentIcons.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)

  • 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);
      },
    ),
    
  • 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)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.12.0...v4.0.0