- Fixed a bug where
MacosPulldownMenuItem
would not show an alert dialog when tapped.
- Updated dependencies
- Support macOS 15
- Add
expandDisclosureItems
flag toSidebarItem
to optionally (default not changed) expand disclosure items initially
- Fixed
SidebarItem
text overflowing.
- Made most widgets aware of the user’s accent color and window state by adding respective fields to
MacosThemeData
. MacosCheckbox
has received a facelift to mimic the look and feel of native macOS checkboxes better.
- Implemented value equality for
MacosThemeData
.
- Fixed
MacosRadioButton
check null value issue.
- Added
initialTime
parameter toMacosTimePicker
, allowing to set an initial time for the picker.This provides more customization options for selecting time.
- Fixed a bug that caused the sidebar to appear darker than intended.
SidebarItems
has now respects the user’s selected accent color and mimics the look of macOS’ sidebar items more closely.
- Fixed images in generated documentation.
PushButton
has received a facelift. It now mimics the look and feel of native macOS buttons more closely.- Note: As a result, its
pressedOpacity
property and thePushButtonTheme
class have been deprecated.
- Note: As a result, its
-
macos_ui
has been migrated to utilize macos_window_utils under the hood, which provides the following benefits:- Window animation smoothness is drastically improved, particularly when miniaturizing and deminiaturizing the application window.
- Some visual artifacts that occurred while the window was being (de)miniaturized (such as the application's shadow going missing) no longer occur.
- The sidebar remains transparent when the app's brightness setting mismatches the OS setting.
- Wallpaper tinting is now supported.
- To migrate an existing application, please refer to the “Modern window look” section in the README.
-
Support for Flutter 3.10 and Dart 3
-
PushButton
has been updated to support theControlSize
enum.- The
buttonSize
property has been changed tocontrolSize
. - Buttons can now be any of the following sizes: mini, small, regular, or large.
- The
-
PushButton.isSecondary
is nowPushButton.secondary
. -
MacosAlertDialog
:primaryButton
andsecondaryButton
are now declared to be of typePushButton
. -
RelevanceIndicator
has been deprecated -
MacosTypography
white and black are now factory constructors calleddarkOpaque()
andlightOpaque()
to reflect Apple's naming conventions.
MacosSwitch
has been completely rewritten and now matches the native macOS switch in appearance and behavior.- A
ControlSize
enum has been introduced, which will allow widgets to more closely match their native counterparts. MacosTypography
- You can now call
MacosTypography.of(context)
as a shorthand for retrieving the typography used in yourMacosTheme
. MacosFontWeight
allows using Apple-specific font weights likew510
,w590
, andw860
.
- You can now call
- Localization
- Added support for
weekdayAbbreviations
andmonthAbbreviations
toMacosDatePicker
. - Added support for
dateFormat
toMacosDatePicker
. - Added support for
startWeekOnMonday
toMacosDatePicker
.
- Added support for
MacosColor
has been updated with some previously missing elements.PushButton
- Now uses the correct
body
text style instead of the incorrectheadline
- Now uses the correct
PushButton
's secondary and disabled colors more closely match their native counterparts.MacosCheckbox
appearance more closely matches its native counterpart.MacosAlertDialog
primaryButton
andsecondaryButton
are now required to havecontrolSize
s ofControlSize.large
.- Docs now suggest that
appIcon
should be of size 64x64.
Toolbar
now uses the correcttitle3
text style instead of the incorrectheadline
MacosTheme
sets the global typography more efficientlyHelpButton
now sizes itself according to specificationResizablePane
can now disallow the usage of its internal scrollbar via theReziablePane.noScrollBar
constructor.
- Clicking on the calendar elements in
MacosDatePicker
has better UX ToolBar
s in use where aSideBar
is not present will now have their title's avoid the traffic lights (native window controls).MacosTypography.darkOpaque()
andMacosTypography.lightOpaque()
now conform to specification by usingMacosColors.labelColor
- Ensure builds targeting web do not utilize any
macos_window_utils
code - Ensure builds targeting web are themed correctly
- Fixed a bug where the
Sidebar.key
parameter wasn't used, which caused certain layouts to be unachievable.
- Default the
_selectedDay
state variable to be 1 when selecting the previous/next month from widget to ensure new date is valid for_formatAsDateTime()
method (flutter/flutter#123669 & macosui#402)
- Added support for
routerConfig
toMacosApp.router
. (#388)
- Fixed a bug where clicking on a overflowed toolbar item with a navigation callback wouldn't work (#346).
- Fixed a typo in the December abbreviation displayed in the
MacosDatePicker
.
- Fix SidebarItem's leading icons not respecting the theme's primary color
✨ New widget: SliverToolBar
- Fixed an issue where the
MacosSearchField
would not perform an action when an item was selected.
- 🚨 Breaking Changes 🚨
ResizablePane
can now be vertically resizedResizablePane.startWidth
has been changed toResizablePane.startSize
ResizablePane.minWidth
has been changed toResizablePane.minSize
ResizablePane.maxWidth
has been changed toResizablePane.maxSize
🚨 Breaking Changes 🚨
MacosScrollbar
has been completely overhauled and now resembles the native macOS scrollbar in appearance and behavior. Previously, it wrapped the material scrollbar, and now creates a custom scrollbar that extendsRawScrollbar
. This resulted in the removal of several material-based properties for the scrollbar, andContentArea.builder
is once again aScrollableWidgetBuilder
! 🎉- Removed material-based scrollbar properties from
MacosScrollbarThemeData
Other changes:
- Added implementation of
MacosDisclosureButton
- Fixed a bug where
CapacityIndicator
only worked correctly for splits = 10
- Adds optional
initialDate
toMacosDatePicker
- Implement
MacosSlider
🚨 Breaking Changes 🚨
ContentArea.builder
has been changed from aScrollableWidgetBuilder
to aWidgetBuilder
due to changes in Flutter 3.7. TheMacosScrollbar
widget needs to undergo radical changes in order to achieve the native macOS scrollbar look and feel in the future, so this will be revisited at that time.
Other changes:
- Per Flutter 3.7.0: Replace deprecated
MacosTextField.toolbarOptions
withMacosTextField.contextMenuBuilder
- Ensure the color panel releases when it is closed
- Avoid render overflows in the
Sidebar
when the window height is resized below a certain threshold (#325) - Update
MacosScrollbar.thumbVisibility
with the latest change introduced in Flutter 3.7 - Update
README.md
to address issues #325 & #332
- Fixed a bug where
MacosPopupButton
would report that aScrollController
was not attached to any views
- Addressed Flutter 3.3 analyzer warnings
- Added
backgroundColor
toMacosSheet
- Fixed an issue where the
title
property ofTitleBar
did not apply a fittingDefaultTextStyle
- Added padding as parameter to MacosTabView constructor.
- Fixed an issue where end sidebar window breakpoints were not respected
- ✨ New
MacosImageIcon
widget. Identical to theImageIcon
fromflutter/widgets.dart
except it will obey aMacosIconThemeData
instead of anIconThemeData
SidebarItemSize
enum, which determines the height of sidebar items and the maximum size theirleading
widgets.SidebarItem
now accepts an optionaltrailing
widget.
- 🔄 Updated
SidebarItems
now supportsSidebarItemSize
via theitemSize
property, which defaults toSidebarItemSize.medium
. The widget has been updated to manage the item's height, the maximum size of the item's leading widget, and the font size of the item's label widget according to the givenSidebarItemSize
.- The example app has been tweaked to use some icons from the SF Symbols 4 Beta via the new
MacosImageIcon
widget.
- New widgets:
MacosTabView
andMacosTabView
- BREAKING CHANGE:
Label.yAxis
has been renamed toLabel.crossAxisAlignment
- BREAKING CHANGE:
TooltipTheme
andTooltipThemeData
have been renamed toMacosTooltipTheme
andMacosTooltipThemeData
- Correct the placement of the leading widget in disclosure sidebar items #268
- Improve the sizing of the disclosure item indicator
- Adds
endSidebar
toMacosWindow
- Fixes RenderFlex overflowed in
MacosListTile
#264
- Update
pubspec.yaml
withrepository
and newhomepage
field.
- Fixes an issue where if the app was displayed in full screen mode, an opaque empty toolbar would appear at the top #249
- Migration to Flutter 3.0
- Minimum dart sdk version is now 2.17.0
- Use new super parameters feature
- Update to
flutter_lints: ^2.0.1
with subsequent fixes MacosScrollbar
API more closely matches its material counterpart
- Update
MacosColor
to more closely match theColor
class- Adds
MacosColor.fromARGB
constructor - Adds
MacosColor.fromRGBO
constructor - Adds
alphaBlend
function - Adds
getAlphaFromOpacity
function
- Adds
- Add a
top
property toSidebar
- Tweak the default
primaryColor
value inMacosThemeData
.
- Fix
MacosApp
documentation
- Fixes issue with error thrown when toolbar actions are modified programmatically #239
- Improved styling for
MacosTooltip
:- Better color and shadows.
- Displays left-aligned, below the mouse cursor.
- New widget:
ToolBarDivider
that can be used as a divider (vertical/horizontal line) in theToolBar
#231. - All toolbar widgets can now receive a
tooltipMessage
property to display aMacosTooltip
when user hovers over them #232.
- Minor improvements to
README.md
- New functionality for
MacosSearchField
- Shows a list of search results in an overlay below the field
- A result can be selected and customized.
- A
MacosOverlayFilter
widget can now be used to apply the blurry "frosted glass" effect on surfaces. - New widget:
CustomToolbarItem
that enables any widget to be used in theToolbar
.
- Improvements to the graphical
MacosTimePicker
- Better color gradient on the border
- Better inner shadow
- Minor size adjustments
- API improvements
- Throw an exception if
MacosColorWell
is clicked on a non-macOS platform
- Minor documentation fix for [MacosColorWell]
- First stable release 🎉
- New widget:
MacosTimePicker
(textual style only!)
- New widget:
MacosColorWell
- New widget:
ToolBar
, which can be used to create a toolbar at the top of theMacosScaffold
. Toolbar items includeToolBarIconButton
,ToolBarPulldownButton
, andToolBarSpacer
widgets. - New widget:
MacosSearchField
, which creates a macOS-style search field. - Breaking change: the title bar (
TitleBar
) should now be set via thetitlebar
property ofMacosWindow
(was previously a property ofMacosScaffold
). If you are using a title bar in your app, please note a small change you would need to make in yourmacos/Runner/MainFlutterWindow.swift
file, described in the "Modern window look" section of the README file. - Fix the graphical version of
MacosDatePicker
having an incorrect current day text color in light theme
- Minor style fixes for
MacosTextField
- New widget:
MacosDatePicker
- Move theme classes to their own files in the
/theme
directory
- Switch over to
flutter_lints
- Improve visual design of
MacosPopupButton
andMacosPulldownButton
, to better match the styling and translucency effect of Apple design. - Remove unnecessary properties of
MacosPopupButton
- New widget:
MacosPulldownButton
, which can be used as a dropdown for selecting actions with either text or an icon as its title.
- Fix
padding
onMacosAlertDialog
whensupress
is null #188
- Remove
MacosScrollbar
fromContentArea
widget (fixes #170) - Remove useless bundled fonts (fixes #187)
- Allow users to customize the mouse cursor for sidebar items (fixes #181)
- Fix active sidebar item icon color (fixes #190)
- Added
padding
property toMacosIconButton
andMacosIconButtonTheme
.
- Adds missing
merge
methods toMacosThemeData
and widgetThemeData
classes, making it possible to use them properly with any number of user-provided custom properties.
- Fixes
MacosThemeData
to properly apply user-definedpushButtonTheme
,helpButtonTheme
, andtooltipTheme
properties.
- Sidebar and ResizablePane more precisely track cursor location
- Sidebar can now be closed by dragging below its minWidth
- Sidebar can now be configured to snap into place when dragged near its startWidth
- Reverts bundling the
native_context_menu
plugin per #179
- New Widget:
MacosPopupButton
- Updates to
MacosIconButton
andMacosBackButton
:- Added a hover effect when mouse moves over the buttons (#168)
- Added
hoverColor
property. - Default shape is now
BoxShape.rectangle
with border radius, as it seems to be the most used in macOS design.
- Added support for transparent sidebar. Please note that changes to
MainFlutterWindow.swift
are required for this to work. (#175)
- Update
native_context_menu
dependency
- New widget -
MacosIcon
!MacosIcon
is identical to regular icons, with the exception that it respects aMacosTheme
. Also includes corresponding theme classes MacosThemeData
now sets a global, configurableiconTheme
forMacosIcon
s
- Update to
PushButton
:- Added
isSecondary
property
- Added
- Nearly all
MouseRegion
s have been updated to useSystemMouseCursors.basic
in order to more closely adhere to Apple norms mouseCursor
properties have been added to most buttons
- Added top-level theming for
MacosIconButton
- Introduces the
MacosIconButtonTheme
InheritedTheme and theMacosIconButtonThemeData
theme class
- Introduces the
- Updates
MacosThemeData
andMacosIconButton
to use the newMacosIconButtonThemeData
- Removes an unnecessary setting of VisualDensity from
MacosThemeData.dark()
- Added native_context_menu as a dependency for native context menus!
- Updates to
MacosListTile
:- Added
leadingWhitespace
property - Added
onClick
callback - Added
onLongPress
callback - Added
mouseCursor
property
- Added
- Fix the outer border of
MacosSheet
not having a border radius
- New Widget:
MacoSheet
- New Widget:
MacosListTile
- Fixed bug where cursor would not change caret location on mouse click
- Upgraded various
copyWith
functions - Added
==
andhashCode
to various classes
- Add generics support to
MacosRadioButton
- Thank you, Sacha Arbonel!
- Add note in docs that a
Builder
is required for manual sidebar toggling to work.
- Fix docs for
PushButtonThemeData
- Update
dart_code_metrics
dependency
- Adds:
MacosWindow
- Improved
MacosScaffold
- Chore: Remove box shadows from
MacosIconButton
- Fix
builder
property inMacosApp
never being used (#148)
- Improved
MacosAlertDialog
design - Added
showMacosAlertDialog
to display aMacosAlertDialog
with standard macOS animations and behaviour.
- Fixes maximum height issue with
MacosAlertDialog
- Adds
suppress
widget parameter toMacosAlertDialog
- Adds
MacosAlertDialog
- Add
bottom
Item toSidebar
- Update
MacosColors
- Fix
Label
alignment
- Adds the
SidebarItem
widget - Fixes an alignment issue with
MacosTextField
- Add
MacosPrefix
to widgets/classes with names that overlap with the material/cupertino libraries:TextField
->MacosTextField
Scaffold
->MacosTextField
IconButton
->MacosIconButton
BackButton
->MacosBackButton
Scrollbar
->MacosScrollbar
Checkbox
->MacosCheckbox
RadioButton
->MacosRadioButton
Tooltip
->MacosTooltip
Typography
->MacosTypography
Switch
->MacosSwitch
- Fix text field prefix icon alignment
- Add
canvasColor
toMacosThemeData
.Scaffold
now uses this as its default background color.
- Add new
MacosColor
andMacosColors
classes - Rename
colors.dart
tomacos_dynamic_color
IconButton
updates:- The
color
property is nowbackgroundColor
- The widget now takes a
Widget icon
rather thanIconData iconData
for better control over widget properties - Deprecate and remove internal
foregroundColor
value
- The
- New widget:
BackButton
,IconButton
- Add
VisualDensity
toMacosThemeData
- Ensure localizations get returned in
MacosApp
- Add
startWidth
properties toResizablePane
andSidebar
- Implement
Scrollbar
- Implement
MacosScrollBehavior
- Fix
TextField
on Flutter v2.2.0
- Updated the theme api
- Properties in
MacosThemeData
and inTypography
can't be null - Renamed
DynamicColorX
toMacosDynamicColor
- Added the method
lerp
on all theme data classes.
- Properties in
- Implemented
Label
(#61) - Capacity Indicator now works as expected (#49)
- Clear button is now aligned to text (#82)
- pub.dev release
- Documentation for
ScaffoldScope
- Implement
Tooltip
- Add mouse cursors to help button, push button and
TextField
- Implement
TextField
- Revamp
Scaffold
#26
CapacityIndicator
colors can now be set on its constructor- Accessibility support for most of the widgets
- Diagnostics Properties (dev tools) for most of the widgets
- Implemented
HelpButton
- Fixed #49
- Implemented
Checkbox
- Implemented
RadioButton
- Update
Typography
with correct letter spacing and font weights - Add
brightnessOf
andmaybeBrightnessOf
functions toMacosTheme
- Adds the
PushButton
widget along withPushButtonTheme
andPushButtonThemeData
- Removes the
height
property fromTypography
'sTextStyle
s - Updates
Typography.headline
's weight and letter spacing
- Major theme refactor that more closely resembles flutter/material and flutter/cupertino
- The
Style
class is nowMacosThemeData
MacosTheme
is now aStatelessWidget
that returns a private_InheritedMacosTheme
. The staticMacosTheme.of(context)
is now defined here.MacosApp
now takes atheme
anddarkTheme
rather thanstyle
anddarkStyle
. Additionally, there are minor changes to the wayMacosApp
is built that more closely resemble howMaterialApp
is built.
- The
- Implemented
Checkbox
- Implemented
ProgressCircle
andProgressBar
- Implemented the
Switch
widget
Scaffold
widget- Fix
Typography
so that text color is shown appropriately based on Brightness
- Project creation
MacosApp
widget- Basic
Typography
- Basic theming via
MacosTheme
andStyle