Releases: bdlukaa/fluent_ui
4.0.1
PaneItemAction.body
is no longer required (#545)- Added
DropDownButton.onOpen
andDropDownButton.onClose
callbacks (#537) - Ensure
MenuFlyoutItem.onPressed
is called after the flyout is closed ifDropDownButton.closeAfterClick
is true (#520) - Ensure the
TimePicker
andDatePicker
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: v4.0.0...v4.0.1
4.0.0
-
BREAKING Removed
NavigationBody
. UsePaneItem.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, useNavigationViewState.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
andTreeViewItem.onExpandToggle
(#522)
-
What's Changed
- Add italian (IT) localization by @patricknicolosi in #337
- add FlyoutOpenMode secondaryPress by @nidetuzi in #334
- Add macOS support to example project by @h3x4d3c1m4l in #339
- Add Dutch (nl) l10n support by @h3x4d3c1m4l in #338
- Fix incorrect documentation for waitDuration on Tooltip by @harysuryanto in #349
- Add Traditional Chinese (zh_Hant) localization by @rk0cc in #340
- Show menu button on minimal mode when display mode is auto by @bdlukaa in #350
- Fluent app review by @bdlukaa in #351
TextBox
review by @bdlukaa in #352- Add Persian by @xmine64 in #354
- Add
AutoSuggestBox.form
by @bdlukaa in #353 - UI updates by @bdlukaa in #355
- Retry add Korean (ko) from #267 by @rk0cc in #358
- add korean(ko) localization by @dubh3 in #267
- Date/Time pickers review by @bdlukaa in #357
- Color updates by @bdlukaa in #368
- Fix flutter.dev link by @WinXaito in #378
- Added Malay (ms) localizations to l10n by @jonsaw in #380
- Updated DropDownButton documentation by @tobiasht in #374
- Remove header space when null by @Alphamplyer in #359
- AutoSuggestBox updates by @bdlukaa in #389
- Polish translations by @madik7 in #388
- NavigationView updates by @bdlukaa in #390
- Add supported language in README.md by @rk0cc in #391
- TextBox review by @bdlukaa in #395
- [wip] Example app rework by @bdlukaa in #397
- README improvements by @phorcys420 in #400
- Example app update by @bdlukaa in #407
- add context menu by @nidetuzi in #398
- DateTimePicker update by @bdlukaa in #406
- Update Dutch translations by @h3x4d3c1m4l in #410
- Add date time localization in Chinese (both Simplified and Traditional) by @rk0cc in #416
- add japanese localization by @chari8 in #408
- Tiles update by @bdlukaa in #422
- Navigation view updates by @bdlukaa in #425
- Tabview rework by @bdlukaa in #427
- Flyouts size by @bdlukaa in #435
- Added Czech localization [cs] by @morning4coffe-dev in #439
- Top navigation update by @bdlukaa in #440
- Add Hungarian language by @RedyAu in #442
- Fix incorrect time display format in TimePicker in Chinese by @rk0cc in #445
- Padding by @bdlukaa in #447
- Use
trackColor
and add innerpadding
for Scrollbar by @bdlukaa in #356 - Rework AutoSuggestBox by @bdlukaa in #450
- Comboboxes by @bdlukaa in #454
- Close overlay when size changes by @bdlukaa in #458
- Public PaneItemKeys for support custom PaneItem by @ccl0326 in #453
- Correctly check for supported locales by @bdlukaa in #459
- Lazy loading asb by @bdlukaa in #460
- Update README's
ScaffoldPage
example by @loic-sharma in #466 - Some bug fixes by @bdlukaa in #469
- tr localization by @timurturbil in #470
- Changed source code of second combobox by @DobreRadu in #465
- Some fixes by @bdlukaa in #480
- Fix dropdown button padding issue by @loic-sharma in #476
- Interactive code snippet by @YehudaKremer in #479
- Combobox updates by @bdlukaa in #481
- Pane item expander by @bdlukaa in #299
- Update Arabic translations by @dmakwt in #488
- Live documentation by @bdlukaa in #494
- Some fixes by @bdlukaa in #495
- Focus review by @bdlukaa in #497
- fix: changelog scrollbar wrong position by @DemoJameson in #491
- [localizations] S renamed to FluentS by @bdlukaa in #503
- Fix progress indicator animation speed affected by frame rate by @DemoJameson in #502
- Make the animation of the progress ring consistent with FluentUI by @DemoJameson in https://github.com/bdl...
4.0.0 release candidate 3
DisableAcrylic
now fully disable transparency of its decendentsAcrylic
s (#468)- Do not interpolate between infinite constraints on
TabView
(#430) - Do not rebuild the
TimePicker
popup when already rebuilding (#437) ToggleSwitch
updates:- Added
TextChangedReason.cleared
, which is called when the text is cleared by the user in anAutoSuggestBox
(#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
toComboBox
- BREAKING Renamed
ComboboxItem
toComboBoxItem
- BREAKING Renamed
ComboBox.backgroundColor
toComboBox.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 toComboBox.disabledPlaceholder
- Added
ComboBoxFormField
andEditableComboBoxFormField
(#373) ComboBox.comboBoxColor
is now correctly applied (#468)ComboBox
popup can't be opened if disabled
- BREAKING Renamed
- Implemented
PaneItemExpander
(#299) TimePicker
andDatePicker
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
aboveReorderableListView
(#492) - BREAKING Removed
ContentDialog.backgroundDismiss
. UseshowDialog.barrierDismissable
(#490) - Reviewed focus (#496)
DatePicker
andTimePicker
now show the focus highlight.
Their popup now can be controlled using the keyboardNavigationBody
now uses aFocusTraversalGroup
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 moreTreeViewItem
now shows the focus highlight. They can also be selected using the keyboardExpander
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 theTreeView
is built
What's Changed
- Update README's
ScaffoldPage
example by @loic-sharma in #466 - Some bug fixes by @bdlukaa in #469
- tr localization by @timurturbil in #470
- Changed source code of second combobox by @DobreRadu in #465
- Some fixes by @bdlukaa in #480
- Fix dropdown button padding issue by @loic-sharma in #476
- Interactive code snippet by @YehudaKremer in #479
- Combobox updates by @bdlukaa in #481
- Pane item expander by @bdlukaa in #299
- Update Arabic translations by @dmakwt in #488
- Live documentation by @bdlukaa in #494
- Some fixes by @bdlukaa in #495
- Focus review by @bdlukaa in #497
- fix: changelog scrollbar wrong position by @DemoJameson in #491
- [localizations] S renamed to FluentS by @bdlukaa in #503
- Fix progress indicator animation speed affected by frame rate by @DemoJameson in #502
- Make the animation of the progress ring consistent with FluentUI by @DemoJameson in #505
- Fix #482 and support to save and restore the open state by @DemoJameson in #501
- Theme change by @bdlukaa in #507
New Contributors
- @loic-sharma made their first contribution in #466
- @timurturbil made their first contribution in #470
- @DobreRadu made their first contribution in #465
- @YehudaKremer made their first contribution in #479
- @DemoJameson made their first contribution in #491
Full Changelog: v4.0.0-pre.3...v4.0.0-pre.4
4.0.0 release candidate 3
-
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 toPaneItemHeader
on open, compact and minimal mode. It defaults to 10 pixels at the top - BREAKING
PaneItem.getPropertyFromTitle
is nowwidget.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 ofPaneItem.title
. It can be called on aText
,RichText
or in anIcon
widgetInheritedNavigationView
is now accessible on the top overflow menu- Added
NavigationPaneThemeData.selectedTopTextStyle
andNavigationPaneThemeData.unselectedTopTextStyle
, which is applied to the items on top mode - Fixed
content
focus on minimal mode - Updated default transitions for top mode:
HorizontalSlidePageTransition
- When top overflow menu is opened,
-
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
andhoveringPadding
- Check if animation is disposed before using it (#446)
- Correctly use
-
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 aList<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(), ... )
- Added
-
Combobox
updates (#454): -
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 toContentSizeInfo
- 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
- BREAKING Removed
- Reviewed animation durations (#421)
- BREAKING Removed
.animationDuration
and.animationCurve
fromScrollbarThemeData
- Added
expandContractAnimationDuration
andcontractDelay
toScrollbarThemeData
- BREAKING Removed
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.
BeforeTabView( 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
iscompact
-
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 onNavigationView
-
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 usingDisableAcrylic
TextChangedReason.suggestionChoosen
is now called properly
- It now uses
-
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
,day
andyear
. - BREAKING Removed
.hourPlaceholder
,.minutePlaceholder
,.amText
,.pmText
fromTimePicker
. It was replaced, respectivelly, by thehour
,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
)
- If
-
Update
Slider
(#405):- Added
.thumbRadius
and.trackHeight
toSliderThemeData
- The active track now isn't taller than the inactive track
- Added
What's Changed
- Add italian (IT) localization by @patricknicolosi in #337
- add FlyoutOpenMode secondaryPress by @nidetuzi in #334
- Add macOS support to example project by @h3x4d3c1m4l in #339
- Add Dutch (nl) l10n support by @h3x4d3c1m4l in #338
- Fix incorrect documentation for waitDuration on Tooltip by @harysuryanto in #349
- Add Traditional Chinese (zh_Hant) localization by @rk0cc in #340
- Show menu button on minimal mode when display mode is auto by @bdlukaa in #350
- Fluent app review by @bdlukaa in #351
TextBox
review by @bdlukaa in #352- Add Persian by @xmine64 in #354
- Add
AutoSuggestBox.form
by @bdlukaa in #353 - UI updates by @bdlukaa in #355
- Retry add Korean (ko) from #267 by @rk0cc in #358
- add korean(ko) localization by @dubh3 in https://github.com/bdlukaa/fl...
Flutter 3.0.0
What's Changed
- Build on Flutter 3.0.0 by @h3x4d3c1m4l in #325
- Bump Version + flutter_lints by @bdlukaa in #333
New Contributors
- @h3x4d3c1m4l made their first contribution in #325
Full Changelog: v3.11.1...v3.12.0
v3.11.1
What's Changed
- Dropdown scroll by @bdlukaa in #297
- Make
TextButton
use the text button style by @devnought in #302 - Hotfixes by @bdlukaa in #308
- Add decoration property by @bdlukaa in #312
- Remove DragToMoveArea parent of WindowButtons by @bdlukaa in #313
New Contributors
- @devnought made their first contribution in #302
Full Changelog: v3.11.0...v3.11.1
v3.11.0 - Menu Flyouts
3.10.3
What's Changed
- NavigationView hotfix by @bdlukaa in #278
- Add _NavigationViewScrollBehavior by @bdlukaa in #279
- Allow to define the minimal tab width by @WinXaito in #283
- Pane header height by @WinXaito in #281
- Fix link (anchor) for Info Label by @WinXaito in #285
- Feature 284 - Added leading property for NavigationPane Widget #288 by @imp-sike in #288
- Text field focus fix by @bdlukaa in #290
- TextFormBox expands fix by @bdlukaa in #291
New Contributors
- @imp-sike made their first contribution in #288
Full Changelog: v3.10.1...v.3.10.3
Indicators hotfix
What's Changed
- Add Arabic(ar) localization by @dmakwt in #268
- Fix overflow behavior for TreeViewItem by @klondikedragon in #270
- Indicator hotfix by @bdlukaa in #273
New Contributors
Full Changelog: v.3.10.0...v3.10.1
Localization, Indicators, CommandBar and Flyouts
- Improves
icons.dart
formatting and its generation (#215) - Use correct color on
FilledButton
when disabled (209) - Built-in support for new languages (#216):
- English
- Spanish (reviewed by @henry2man)
- French (reviewed by @WinXaito)
- Brazilian Portuguese (reviewed by @bdlukaa)
- Russian (reviewed by @raitonoberu)
- German (reviewed by @larsb24)
- Hindi (reviewed by @alexmercerind)
- Simplified Chinese (reviewed by @zacksleo)
- Add
useInheritedMediaQuery
property toFluentApp
(#211) TreeView
updates (#255):- Optional vertical scrolling by setting
shrinkWrap
tofalse
- TreeViewItem now has a custom primary key (
value
field) - Added
onSelectionChanged
callback, called when the selection is changed
- Optional vertical scrolling by setting
- 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
- Add
- Long
content
widget no longer overflow inContentDialog
(#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
toNavigationPane.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 onExpander
works properly (#252)- BREAKING Flyout changes:
- Removed
Flyout.contentWidth
and addedFlyoutContent.constraints
. Now the content will be automatically sized and layed out according to the placement - Added
Flyout.placement
which takes aFlyoutPlacement
- Added
Flyout.openMode
which takes aFlyoutOpenMode
Flyout.controller
is no longer required. If not provided, a local controller is created to handle theFlyout.openMode
settings- Breaking
FlyoutController.open
is now a function - Added
FlyoutController.isOpen
,FlyoutController.isClosed
,FlyoutController.close()
,FlyoutController.open()
andFlyoutController.toggle()
- Breaking Removed
Popup.contentHeight
- Removed
- BREAKING Updated typography (#261):
- Renamed
Typography.standart
toTypography.fromBrightness
- Renamed
Typography
constructor toTypography.raw
- Default color for dark mode is now
const Color(0xE4000000)
- Updated default font sizes for
display
,titleLarge
,title
andsubtitle
- Renamed
TabWidthBehavior.sizeToContent
now works properly (#218)
What's Changed
- Add
useInheritedMediaQuery
toFluentApp
by @henry2man in #211 - Replace WindowButtons & Add Confirm before closing by @lijy91 in #214
- Fix disabled color foreground on FilledButton by @WinXaito in #209
- Improve navpane anim by @WinXaito in #217
- chore: bump pub score by @Ascenio in #215
- ci: enforce static analysis by @Ascenio in #227
- FluentUI Widgets Localization Support by @henry2man in #216
- Vertical scrolling for TreeView and other enhancements by @klondikedragon in #225
- Account for enabled on pressing states by @bdlukaa in #233
- Implement command bars and dynamic overflow layout by @klondikedragon in #232
- Add isCompact field to CommandBar by @klondikedragon in #235
- Window Transparency support by @bdlukaa in #237
- Restyle CommandBar Flyout by @bdlukaa in #241
- Clear button autosuggest by @bdlukaa in #240
- Dialog long text by @bdlukaa in #246
- Minimal pane by @bdlukaa in #247
- Use a key on the content by @bdlukaa in #250
- Open Expander according to initiallyExpanded by @bdlukaa in #252
- fix README by @yoehwan in #259
- Typography by @bdlukaa in #261
- Flyout rework by @bdlukaa in #253
- New StickyIndicator by @bdlukaa in #248
- Fix TabWidthBehavior.sizeToContent by @bdlukaa in #264
New Contributors
- @lijy91 made their first contribution in #214
- @Ascenio made their first contribution in #215
- @klondikedragon made their first contribution in #225
- @yoehwan made their first contribution in #259
Full Changelog: v3.9.1...v.3.10.0