Bot releases are hidden (Show)
NumberBox
now supports precision greater than 4. ² Add NumberBox.pattern
, NumberBox.formatter
, NumberBox.format
(#1080)PaneItem
within PaneItemExpander
remained accessible in NavigationPane
compact mode (#1081)DatePicker
popup (#1049)PaneItemWidgetAdapter
(#1087)maxWidth
to TooltipThemeData
for optional wrapping of long tooltips (#1094)PaneItem
Behavior in Compact Mode by @WXL-steven in https://github.com/bdlukaa/fluent_ui/pull/1082
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.9.0...v4.9.1
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.
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.8.0...v4.9.0
Published by bdlukaa 11 months ago
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)
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.7...v4.8.0
Published by bdlukaa 12 months ago
ProgressRing
and ProgressBar
now fit correctly the parent bounds (#942)TabView
buttons was only rendered on hover. Now the buttons (add and scroll buttons) are always rendered.ComboboxItem
correctly apply foreground color. Added ComboboxItem.enabled
(#949)scroll_pos
dependecy to the latest version which is 0.5.0Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.6...v4.7.7
Published by bdlukaa about 1 year ago
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.4...v4.7.6
Published by bdlukaa about 1 year ago
DatePicker
day does not skip a day (#914)PaneItemExpander
's flyout is attached before using it (#857)TextField
properties on NumberBox
(#933)TextField
properties on PasswordBox
(#925)AutoSuggestBox.onOverlayVisibilityChanged
now results in the correct state (#926)MenuFlyoutSubItem
inherits the acrylic data from MenuFlyout
(#932)MenuFlyoutSubItem
inhertis its MenuFlyout
parent decoration data (#931)paneNavigationButtonIcon
on NavigationPaneThemeData
(#929)Published by bdlukaa about 1 year ago
CommandBar
. (#872)SplitButtonBar
and its related widgets. Use SplitButton
or SplitButton.toggle
instead (#882, #411)BreadcrumbBar
(#878)Expander
header is sized dynamically (#523)Expander.contentPadding
and Expander.contentShape
(#891)FluentThemeData.selectionColor
, which defaults to the accent color normal shade (#897)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)ListTile.cursor
(#901)Tab.disabled
(#904)NavigationPaneThemeData.overlayBackgroundColor
, which is displayed on overlays, such as minimal and compact pane overlays (#903)PaneItem.infoBadge
and PaneItem.trailing
while the pane is transitioning (#906)NavigationView.onOpenSearch
is called when autoSuggestBoxReplacement
is pressed (c251600)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)
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.7.0...v4.7.3
Published by bdlukaa over 1 year ago
AutoSuggestBox.itemBuilder
callback builder, which builds the items inside the overlay (#869)AutoSuggestBoxItem.semanticsLabel
(#869)ButtonState.forStates
, a helper function to quickly resolve values for each button state (#875).disabledColor
, uncheckedColor
, .checkedColor
and .borderInputColor
from FluentThemeData
. Use the values from theme resources instead (1295b6
)ToggleSwitch.thumb
and .thumbBuilder
have been renamed to .knob
and .knobBuilder
, respectively. DefaultToggleSwitchThumb
was renamed to DefaultToggleSwitchKnob
(e15e89d)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
)PaneItemExpander.initiallyExpanded
(#864)NumberFormBox
(#862)PaneItem.onTap
from PaneItemExpander.items
, when displayed in popup, are now correctly invoked (#859)Combobox
items on web now works properly (#757)TreeViewItem
, if selection mode is single
, gets selected when focused with the keyboard (#835)TreeView
's built-in checkbox now doesn't receive focus. It can now be focused by invoking it with the keyboard (#877)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)TreeView.gesturesBuilder
and TreeViewItem.gestures
(#851)Semantics
. Now, not every input is treated as a button (2fee45)BottomSheet
, Snackbar
, Chip
and PillButtonBar
- and all their related widgets. (c1cfe491)EditableComboboxFormField.value
. Use EditableComboboxFormField.initialValue
insteadDatePicker.startYear
. Use DatePicker.startDate
insteadDatePicker.endYear
. Use DatePicker.endDate
insteadTextButton
. Use HyperlinkButton
insteadTabView.wheelScroll
. It is no longer usedThemeData
. Use FluentThemeData
insteadFull Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.6.0...v4.7.0
Published by bdlukaa over 1 year ago
HyperlinkButton
by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/802
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.2...v4.6.0
Published by bdlukaa over 1 year ago
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
FluentApp.router
s color
property optional by @jtdLab in https://github.com/bdlukaa/fluent_ui/pull/783
routerConfig
to FluentApp.router
by @jtdLab in https://github.com/bdlukaa/fluent_ui/pull/784
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.1...v4.4.2
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)
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.4.0...v4.4.1
Published by bdlukaa over 1 year ago
TabView
macos shortcuts (#728)TabView
focus on children now works properly (#648)TabView
colors now follow the Win UI 3 theme resources (#730)ContentDialog
copy code (#735)TextBox
rework:
.initialValue
. Use TextEditingController.text
instead.header
and .headerStyle
. Use InfoLabel
instead.outsidePrefix
, .outsidePrefixMode
, .outsideSuffix
, .outsideSuffixMode
.minHeight
and .iconButtonThemeData
AutoSuggestBox
popup is now part of the text box tap region (#698)FluentTextSelectionToolbar
now follows global typography (#712)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 [...]
},
)
ThemeData
to FluentThemeData
by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/725
TextBox
rework by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/738
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.2.0...v4.4.0
Published by bdlukaa over 1 year ago
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.4...v4.2.0
Published by bdlukaa almost 2 years ago
FlyoutListTile
can be used outside of a flyout (#650)key
parameter to NavigationPaneItem
and all its instances (#656)fontFamily
is inherit in some widgets (654)Flyout.navigatorKey
(#538)Card.borderColor
(#643)DatePicker
and TimePicker
popup (#663)AutoSuggestBox
items by long pressing arrow up and down keysAutoSuggestBox
(#671)AutoSuggestBox
's trailingIcon
now comes after the close buttonTextBox.clearGlobalKey
was remove, since it was not usedAutoSuggestBox.unfocusedColor
and TextFormBox.unfocusedColor
displayInfoBar
, which shows an info bar as an overlay (#673)ThemeData.extensions
(#674)Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.2...v4.1.4
Published by bdlukaa almost 2 years ago
PageHeader
now gives appropriate bounds to its commandBar
(#642)NavigationView
body state is not lost when resizing windowTabView
' tabs' state are not lost when changing selected tab (#607)trailing
in FlyoutContent
(#487)Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.1.1...v4.1.2
Published by bdlukaa almost 2 years ago
startYear
and endYear
in DateTime
are used properly (#627)TreeViewItem
(#632)NavigationPane.scrollBehavior
(#640)CommandBarCard.borderRadius
(#641)TextFormBox.initialValue
TreeViewState.toggleItem
, which toggles the item expanded state (#493)NavigationView
pane items are brought into view when selectedTreeView
selection state behavior for items that are not expanded (#578)NavigationView
is properly preserved (#607)ExpanderState.open
to ExpanderState.isExpanded
Expander
(#596)ToggleButton
border width is uniform (#610)startYear
and endYear
in DateTime
are used properly by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/637
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.3...v4.1.1
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
Published by bdlukaa about 2 years ago
NavigationView.paneBodyBuilder
for customization of widget built for body of pane. (#548)NavigationAppBar
unnecessary leading icon when no pane is provided in NavigationView
(#551)NavigationView.minimalPaneOpen
and, with it, the possibility to open minimal pane programatically (#564)NavigationView
compact mode transitionTreeView
updates (#555):
TreeViewItemInvokeReason
parameter to TreeView.onItemInvoked
and TreeViewItem.onInvoked
.TreeView.includePartiallySelectedItems
so that items who have children with a mixed selection state will be included in the onSelectionChanged
callback.TreeView.deselectParentWhenChildrenDeselected
optional behavior so that parent items can remain selected when all of their children are deselected.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.Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.1...v4.0.2
Published by bdlukaa about 2 years ago
PaneItemAction.body
is no longer required (#545)DropDownButton.onOpen
and DropDownButton.onClose
callbacks (#537)MenuFlyoutItem.onPressed
is called after the flyout is closed if DropDownButton.closeAfterClick
is true (#520)TimePicker
and DatePicker
popups will fit if the screen is small (#544)NavigationAppBar.leading
(#539)AutoSuggestBox.noResultsFoundBuilder
(#542)AutoSuggestBox.inputFormatters
(#542)Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v4.0.0...v4.0.1
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)
TextBox
review by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/352
AutoSuggestBox.form
by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/353
trackColor
and add inner padding
for Scrollbar by @bdlukaa in https://github.com/bdlukaa/fluent_ui/pull/356
ScaffoldPage
example by @loic-sharma in https://github.com/bdlukaa/fluent_ui/pull/466
flutter gen-l10n command
instead of flutter intl plugin
to generate localizations by @DemoJameson in https://github.com/bdlukaa/fluent_ui/pull/518
Full Changelog: https://github.com/bdlukaa/fluent_ui/compare/v3.12.0...v4.0.0