fluent_ui

Implements Microsoft's WinUI3 in Flutter.

BSD-3-CLAUSE License

Stars
2.9K
Committers
98

Bot releases are hidden (Show)

fluent_ui - 4.0.0 release candidate 3

Published by bdlukaa about 2 years ago

  • 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

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.0-pre.3...v4.0.0-pre.4

fluent_ui - 4.0.0 release candidate 3

Published by bdlukaa about 2 years ago

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

Release candidate 2

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

Release candidate 1

  • 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

What's Changed

New Contributors

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

fluent_ui - Flutter 3.0.0

Published by bdlukaa over 2 years ago

What's Changed

New Contributors

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

fluent_ui - v3.11.1

Published by bdlukaa over 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.11.0...v3.11.1

fluent_ui - v3.11.0 - Menu Flyouts

Published by bdlukaa over 2 years ago

What's Changed

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v.3.10.3...v3.11.0

fluent_ui - 3.10.3

Published by bdlukaa over 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.10.1...v.3.10.3

fluent_ui - Indicators hotfix

Published by bdlukaa over 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v.3.10.0...v3.10.1

fluent_ui - Localization, Indicators, CommandBar and Flyouts

Published by bdlukaa over 2 years ago

  • Improves icons.dart formatting and its generation (#215)
  • Use correct color on FilledButton when disabled (209)
  • Built-in support for new languages (#216):
  • Add useInheritedMediaQuery property to FluentApp (#211)
  • TreeView updates (#255):
    • Optional vertical scrolling by setting shrinkWrap to false
    • TreeViewItem now has a custom primary key (value field)
    • Added onSelectionChanged callback, called when the selection is changed
  • Account for enabled on pressing states (#233)
  • Implement CommandBar (#232)
    • Add DynamicOverflow layout widget, for one-run horizontal or vertical layout with an overflow widget
    • Add HorizontalScrollView helper widget, with mouse wheel horizontal scrolling
  • Long content widget no longer overflow in ContentDialog (#242)
  • Content state is no longer lost when the pane display mode is changed (#250)
  • BREAKING Update indicators (#248):
    • Added InheritedNavigationView

    • Updated sticky indicator to match the latest Win 11 UI (#173)

    • BREAKING Renamed NavigationPane.indicatorBuilder to NavigationPane.indicator

    • BREAKING Indicators are no longer built with functions
      Before:

      indicatorBuilder: ({
        required BuildContext context,
        required NavigationPane pane,
        required Axis axis,
        required Widget child,
      }) {
        if (pane.selected == null) return child;
        assert(debugCheckHasFluentTheme(context));
        final theme = NavigationPaneTheme.of(context);
      
        final left = theme.iconPadding?.left ?? theme.labelPadding?.left ?? 0;
        final right = theme.labelPadding?.right ?? theme.iconPadding?.right ?? 0;
      
        return StickyNavigationIndicator(
          index: pane.selected!,
          pane: pane,
          child: child,
          color: theme.highlightColor,
          curve: Curves.easeIn,
          axis: axis,
          topPadding: EdgeInsets.only(left: left, right: right),
        );
      }
      

      Now:

      indicator: StickyNavigationIndicator(
        color: Colors.blue.lighter, // optional
      ),
      
  • initiallyExpanded property on Expander works properly (#252)
  • BREAKING Flyout changes:
    • Removed Flyout.contentWidth and added FlyoutContent.constraints. Now the content will be automatically sized and layed out according to the placement
    • Added Flyout.placement which takes a FlyoutPlacement
    • Added Flyout.openMode which takes a FlyoutOpenMode
    • Flyout.controller is no longer required. If not provided, a local controller is created to handle the Flyout.openMode settings
    • Breaking FlyoutController.open is now a function
    • Added FlyoutController.isOpen, FlyoutController.isClosed, FlyoutController.close(), FlyoutController.open() and FlyoutController.toggle()
    • Breaking Removed Popup.contentHeight
  • BREAKING Updated typography (#261):
    • Renamed Typography.standart to Typography.fromBrightness
    • Renamed Typography constructor to Typography.raw
    • Default color for dark mode is now const Color(0xE4000000)
    • Updated default font sizes for display, titleLarge, title and subtitle
  • TabWidthBehavior.sizeToContent now works properly (#218)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.9.1...v.3.10.0

fluent_ui - Input Update

Published by bdlukaa over 2 years ago

  • TextBox updates: (#179)
    • Correctly apply the style property
    • Correctly apply decoration to the background
    • Added foregroundDecoration and highlightColor property. They can not be specified at the same time
    • BREAKING replaced maxLengthEnforeced with maxLengthEnforcement
  • Expose more propertied to TextFormBox
  • AutoSuggestBox updates:
    • Improved fidelity of the suggestions overlay expose more customization properties (#174)
    • When a suggestion is picked, the overlay is automatically closed and the text box is unfocused
    • Clear button now only shows when the text box is focused
  • Add directionality support (#184)
  • Correctly apply elevation for DropDownButton overlay (#182)
  • Show app bar even if NavigationPane is not provided on NavigationView (#187)
  • Ensure NavigationAppBar.actions are rendered on the top of the other widgets (#177)
  • All Form widgets now have the same height by default
  • Only show one scrollbar on ComboBox overlay
  • Fix opened pane opacity
  • Added menuColor for theme, which is now used by dropdown button, auto suggest box, tooltip and content dialog
  • Added Card and cardColor for theme
  • Update fluent text controls and added support for SelectableText (#196)

What's Changed

New Contributors

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

fluent_ui - Fidelity

Published by bdlukaa over 2 years ago

What's Changed

  • BREAKING Renamed standartCurve to standardCurve

  • BREAKING Completly rework DropDownButton

  • BREAKING Removed CheckboxThemeData.thirdStateIcon

    Currently, there isn't a fluent icon that is close to the native icon. A local widget _ThirdStateDash is used

  • Do not override material Theme on FluentApp (#155)

  • Slider thumb now doesn't change inner size if hovered while disabled

  • Uniform foreground color on Checkbox

  • Updated FilledButton Style

  • ToggleButton and FilledButton now share the same style

  • ScaffoldPage.scrollable and ScaffoldPage.withPadding

  • Ensure we use Typography.body as the default text style on BaseButton (#120)

  • Update ButtonThemeData.uncheckedInputColor

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.8.0...v3.9.0

fluent_ui - Flutter Favorite

Published by bdlukaa over 2 years ago

  • Tests (#142)

  • Added Material Theme to Fluent Theme Builder (#133)

  • Add more customization options to PaneItem (#111, #144)

  • NavigationView updates BREAKING:

    • Properly add item key to PaneItem in top mode (#143)
    • Items bounds and positions are fetched when the item list is scrolled as well to prevent misalignment
    • Added the helper functions NavigationIndicator.end and NavigationIndicator.sticky
    • Use Curves.easeIn for sticky navigation indicator by default
    • Use the correct accent color for navigation indicators by default
    • EntrancePageTransition is now the correct page transition used when display mode is top
    • Apply correct press effect for PaneItem when display mode is top
    • BREAKING Removed NavigationPane.defaultNavigationIndicator
    • BREAKING Replaced offsets and sizes with pane in NavigationIndicator

    Before:

    pane: NavigationPane(
      indicatorBuilder: ({
        required BuildContext context,
        /// The navigation pane corresponding to this indicator
        required NavigationPane pane,
        /// Corresponds to the current display mode. If top, Axis.vertical
        /// is passed, otherwise Axis.vertical
        Axis? axis,
        /// Corresponds to the pane itself as a widget. The indicator is
        /// rendered over the whole pane.
        required Widget child,
      }) {
        if (pane.selected == null) return child;
        assert(debugCheckHasFluentTheme(context));
        final theme = NavigationPaneThemeData.of(context);
    
        axis??= Axis.horizontal;
    
        return EndNavigationIndicator(
          index: pane.selected,
          offsets: () => pane.effectiveItems.getPaneItemsOffsets  (pane.paneKey),
          sizes: pane.effectiveItems.getPaneItemsSizes,
          child: child,
          color: theme.highlightColor,
          curve: theme.animationCurve ?? Curves.linear,
          axis: axis,
        );
      },
    ),
    

    Now:

    pane: NavigationPane(
      indicatorBuilder: ({
        required BuildContext context,
        /// The navigation pane corresponding to this indicator
        required NavigationPane pane,
        /// Corresponds to the current display mode. If top, Axis.vertical
        /// is passed, otherwise Axis.vertical
        required Axis axis,
        /// Corresponds to the pane itself as a widget. The indicator is
        /// rendered over the whole pane.
        required Widget child,
      }) {
        if (pane.selected == null) return child;
        assert(debugCheckHasFluentTheme(context));
        final theme = NavigationPaneThemeData.of(context);
    
        return EndNavigationIndicator(
          index: pane.selected,
          pane: pane,
          child: child,
          color: theme.highlightColor,
          curve: theme.animationCurve ?? Curves.linear,
          axis: axis,
        );
      },
    ),
    
fluent_ui - 3.7.0

Published by bdlukaa over 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.6.0...v.3.7.0

fluent_ui - v3.6.0 - TabView update

Published by bdlukaa almost 3 years ago

  • Implement TreeView (#120)
  • Fix Tooltip.useMousePosition
  • Fix Slider and RatingBar (#116)
  • Fix scroll buttons when there are too many tabs in TabView (#92)
  • Fix button style on tab in TabView (#90)
  • Added Close on middle click on tabs in TabView (#91)
  • Added newTabLabel, closeTabLabel, scrollTabBackward, scrollTabForward to FluentLocalizations
  • Fix TabView's text when it's too long. Now it's clipped when overflow and line doesn't break
  • Added TabView.closeButtonVisibility. Defaults to CloseButtonVisibilityMode.always
  • Updated selected tab paint
  • Added TabView.tabWidthBehavior. Defaults to TabWidthBehavior.equal
  • Added TabView.header and TabView.footer
  • Slider's mouse cursor is now MouseCursor.defer
  • Added SmallIconButton, which makes an IconButton small if wrapped. It's used by TextBox
  • Added ButtonStyle.iconSize
  • BREAKING AutoSuggestBox updates:
    • Added FluentLocalizations.noResultsFoundLabel. "No results found" is the default text
    • Removed itemBuilder, sorter, noResultsFound, textBoxBuilder, defaultNoResultsFound and defaultTextBoxBuilder
    • Added onChanged, trailingIcon, clearButtonEnabled and placeholder
    • controller is now nullable. If null, an internal controller is creted

  • BREAKING Removed ThemeData.inputMouseCursor
  • BREAKING Removed cursor from DatePicker, TimePicker, ButtonStyle, CheckboxThemeData, RadioButtonThemeData, SliderThemeData, ToggleSwitchThemeData, NavigationPaneThemeData
  • Scrollbar is not longer shown if PaneDisplayMode is top
  • If open the compact pane, it's not always a overlay
  • Added triggerMode and enableFeedback to Tooltip.
  • Added Tooltip.dismissAllToolTips

  • Update inputs colors
  • Expander now properly disposes its resources
  • Add the borderRadius and shape attributes to the Mica widget
  • Implement DropDownButton (#85)

  • BREAKING Minimal Flutter version is now 2.8
  • NavigationAppBar.backgroundColor is now applied correctly. (#100)
  • ComboBox's Popup Acrylic can now be disabled if wrapped in a DisableAcrylic (#105)
  • NavigationPane width can now be customizable (#99)
  • Implement PaneItemAction for NavigationPane (#104)

What's Changed

New Contributors

Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.5.0...v3.6.0

fluent_ui - v3.5.0

Published by bdlukaa almost 3 years ago

  • BREAKING Minimal Flutter version is now 2.8
  • NavigationAppBar.backgroundColor is now applied correctly. (#100)
  • ComboBox's Popup Acrylic can now be disabled if wrapped in a DisableAcrylic (#105)
  • NavigationPane width can now be customizable (#99)
  • Implement PaneItemAction for NavigationPane (#104)
  • ContentDialog constraints can now be customizable (#86)
  • Add possibility to disable acrylic by wrapping it in a DisableAcrylic (#89)
  • Fix onReaorder null exception (#88)
  • Implement InfoBadge
  • Implement Expander (#85)
  • Default inputMouseCursor is now MouseCursor.defer
  • NavigationView.contentShape is now rendered at the foreground
fluent_ui - Flexibility

Published by bdlukaa almost 3 years ago

fluent_ui - 3.3.0

Published by bdlukaa about 3 years ago

  • Back button now isn't forced when using top navigation mode (#74)
  • PilButtonBar now accept 2 items (#66)
  • Added builder variant to NavigationBody.
  • Fixed content bug when AppBar was not supplied too NavigationView
fluent_ui - Flutter 2.5.0

Published by bdlukaa about 3 years ago

  • Added missing parameters in _FluentTextSelectionControls methods (#67)
  • Min Flutter version is now 2.5.0
  • EXAMPLE APP Updated the url strategy on web.
  • EXAMPLE APP Upgraded dependencies
fluent_ui - Windows 11

Published by bdlukaa about 3 years ago

Updated the package to match the Windows 11 design system.

  • Update ToggleButton design.
  • Update Button design.
  • Update RadioButton design:
  • Update ContentDialog design.
  • Update NavigationView design:
    • BREAKING: Acryic is not used anymore. Consequently, useAcrylic method was removed.
  • Implemented Mica, used by the new NavigationView
  • Added support for horizontal tooltips. Set Tooltip.displayHorizontally to true to enable it.
  • Updated Acrylic to support the web
  • Update Checkbox design
  • Update ToggleSwitch design
  • Update Scrollbar design
  • Update Slider design
  • Update InfoBar design
  • Update pickers design (Combobox, DatePicker and TimePicker)
fluent_ui - Bug fixes

Published by bdlukaa over 3 years ago

  • Implement Fluent Selection Controls for TextBox (#49)
  • Tooltip is now displayed when focused (#45)
  • AppBar is now displayed when minimal pane is open.
  • AppBar's animation now follows the pane animation
fluent_ui - Material Update

Published by bdlukaa over 3 years ago

  • BREAKING: Material Icons are not used anymore. Use FluentIcons instead.
  • BREAKING: Reworked the Acrylic widget implementation (#47)
  • BREAKING: Removed the useAcrylic property from NavigationView. Acrylic is now used by default.
  • PaneDisplayMode.compact has now a width of 40, not 50.
  • Removed SizeTransition from TabView.