The Dart package site pub.dev restricts the size of the main CHANGELOG.md file size to maximum 128kB. To work around this limitation, older changelogs and dev release changelogs have been moved into individual files linked from the main changelog.
Jan 23, 2023
This major release does not contain any breaking API changes. However, the major version is bumped because some past styles and defaults, when opting in on Material 3 have been tuned to better align with new Material 3 widgets and design in the Flutter 3.7 release. The new features are also significant.
Requires Flutter beta 3.7.0-1.4.pre or later.
NEW
-
Added 12 new Material 3 color schemes:
redM3,pinkM3,purpleM3,indigoM3,blueM3,cyanM3,tealM3,greenM3,limeM3,yellowM3,orangeM3anddeepOrangeM3for a total of 52 built-in light and dark theme pairs. These schemes work well in Material 3 with or without seed generation. But using FCS advanced and flexible key color-based seed generation is recommended when using Material 3. You can always lock e.g. primary and tertiary color to the color values you used, typically brand colors, as key colors for the seed generation. -
Added support for new
ColorSchemecolorsscrimandoutlineVariant. -
Added support for
fontFamilyFallbackandpackage, so acopyWithonFlexColorSchemegeneratedThemeDatais not needed to use them. -
Added support for Material 3 buttons
FilledButtonandFilledButton.tonal.- Supported via
FlexSubThemes.filledButtonThemethat is controlled viaFlexSubThemesDatapropertiesfilledButtonRadius,filledButtonSchemeColorandfilledButtonTextStyle. - When setting up theming for
FilledButtonit was noticed that variantFilledButton.tonalcannot be themed separately, see issue: flutter/flutter#115827.
- Supported via
-
Added option to keep using the M2 style Divider in M3. The in M3 used primary color tinted outlineVariant does not fit on any color. The M2-style based on black or white with opacity does. It is also less prominent than the M3 style and may be preferred. Set
FlexSubThemesDatapropertyuseM2StyleDividerInM3to true to use the M2 style in M3. Defaults to false.- FlexColorScheme also sets
ThemeData.dividerColortoThemeData.colorScheme.outlineVariantwhenThemeData.useMaterial3istrue. This keeps the in Flutter SDK to be deprecatedThemeData.dividerColoralways same as actually used effectiveDividercolor. Thus, if an app usesTheme.of(context).dividerColorwhile it still exists, to set a color to it, and expects it be the same color as effectiveDividercolor, it will be so in FCS, regardless of if M2 or M3 is being used. This is not the case in Flutter SDK by default, see issue flutter/flutter#117755 for more information.
- FlexColorScheme also sets
-
Added
elevationtoFlexSubThemes.timePickerTheme, and make it use the dialog sharedFlexSubThemesData.dialogElevationsetting. This property works with the Flutter master channel, but does not yet exist in Flutter beta 3.7.0-1.4.pre. It was commented out of this released based on Flutter beta. It is unsure if it will land in the next stable Flutter, it probably will not. If it does not land, it will remain commented in next FCS7 stable release as well. Its addition will have to be left pending inclusion in the following Flutter stable release, probably in 3 to 4 months. -
Added boolean
tintedDisabledControlstoFlexSubThemesData. If set to true, disabled widgets will get a hint of primary color or their active main color, when disabled. In future minor versions, this will also apply to components that use own themed settings for disabled color, not only to the ones where disabled color is controlled byThemeData.disabledColor. Previously tinted disabled color forThemeData.disabledColorwas included and defined whenFlexSubThemesData.interactionEffectswas set to true. It is now instead controlled by this separate tinted disabled-controls setting. Defaults to true, for an FCS opinionated default. This matches past default when it was included inFlexSubThemesData.interactionEffects. -
Added boolean
inputDecoratorFocusedHasBordertoFlexSubThemesData. Defaults to true. If set to false, there is no border on theInputDecorator, typically used by text fields, when the input decorator is focused. It controls the new parameterfocusedHasBorderinFlexSubThemes.inputDecorationTheme. -
Added
SchemeColorvalueinputDecoratorBorderSchemeColortoFlexSubThemesData. It is used to define and customize the border color ofInputDecoratoron e.g. TextField. It controls the new parameterborderSchemeColorinFlexSubThemes.inputDecorationTheme. -
Added
appBarThemeandtabBarThemetoFlexSubThemes. -
Added Material 3 styling to
TabBarwhen M3 is used. UseFlexTabBarStyle.flutterDefaultto get the SDK default colors in M3 mode.TabBarmay get more configuration options in the next FCS version. -
Added
doublevalueappBarScrolledUnderElevationtoFlexSubThemesData. It is used to define and customize the themed scrolled under elevation of theAppBar. It controls the new parameterscrolledUnderElevationinFlexSubThemes.appBarTheme. -
Added
SchemeColorvaluetoggleButtonsUnselectedSchemeColorandtoggleButtonsBorderSchemeColortoFlexSubThemesData. They are used to define and customize the themed unselected button and border color ofToggleButtons. They control the new parametersunselectedSchemeColorandborderSchemeColorinFlexSubThemes.toggleButtonsTheme. -
Added
SchemeColorvaluesliderIndicatorSchemeColor, and enumFlexSliderIndicatorTypevaluesliderValueIndicatorType, plus enumShowValueIndicatorvaluesliderShowValueIndicatortoFlexSubThemesData. They control the new parametersvalueIndicatorColor,valueIndicatorTypeandshowValueIndicatorinFlexSubThemes.sliderTheme. -
Added
SchemeColorvaluedrawerBackgroundSchemeColorand double valuesdrawerRadius,drawerElevationtoFlexSubThemesData. They control the new parametersbackgroundSchemeColor,radiusandelevationin new sub-themeFlexSubThemes.drawerTheme. -
Added
menuThemetoFlexSubThemes, it provides styling for elevation, radius and background color with optional opacity for the new Mw componentsMenuAnchor,MenuBarandDropDownMenu. The sameFlexSubThemesDatathat are used forPopupMenuButtonare used to control this theme. Those arepopupMenuRadius,popupMenuElevation,popupMenuSchemeColor, andpopupMenuOpacity. -
Added
timePickerElementRadiustoFlexSubThemesDatathat can be used to controlelementRadiusinFlexSubThemes.timePickerTheme, it changes the themed border radius of the time input entry elements. -
Added
segmentedButtonRadius,segmentedButtonSchemeColor,segmentedButtonUnselectedSchemeColor,segmentedButtonBorderSchemeColorandsegmentedButtonBorderWidthtoFlexSubThemesDatathey control the equivalent properties in the newFlexSubThemes.segmentedButtonThemeused to customize theSegmentedButton.
CHANGE
-
Style breaking: Tinted disabled components style.
Style change on tinted disabled components when opting in ontintedDisabledControls. It is visually breaking, but subtle. Disable opacity alpha and alpha blend constants where tuned, kDisabledAlphaBlend from 0xAA (67%) to 0xCC (80%) and kDisabledBackgroundAlpha from 0x31 (19%) to 0x26 (15%). The new tinted disable colors look better. They are close in style to default grey ones, with a subtle primary tint, while still being more legible than in previous versions. Opting in on tinted disabled components is still not yet available on all components. It is more available in M2 mode. In upcoming minor releases, tinted disabled components will be made available on all themed components and consistently applied in both M2 and M3 mode. More visual tuning of this feature may be required in later releases. -
Style breaking:
BottomAppBarcolor.
Changed FlexColorScheme defaultBottomAppBarcolor to becolorScheme.surface, same as Flutter default. Previously FlexColorScheme usedcolorScheme.backgroundcolor as an opinionated default. The change is minor, and in many designs the color values are the same. -
Style breaking: Error colors in M2 for
materialBaseline,verdunHemlockanddellGenoa.
Previously existing native Material 3 color schemes,materialBaseline,verdunHemlockanddellGenoawere changed to use Material 3 error colors, also in Material 2 mode and when not using seed colors. -
Removed in version 6.1.0 included manual M3 elevation tint for
BottomSheetandPopupMenuButton. In Flutter 3.7.0, the tint is included automatically as it should be and workaround is not needed anymore. -
The
ListTileThemeDatawas added to core defaults. It setsListTileThemeData.tileColortoColors.transparentifThemeData.useMaterial3is true. This is done to avoid issue: flutter/flutter#117700. This extra M3 core default theme fix will be removed as soon as the issue is fixed. -
Changed
FlexColorScheme.bottomAppBarElevationto be nullable. In M2 mode if is null, it follows definedappBarElevationas before. In M3, it is kept null in order to default to M3's default elevation of 3, so thatBottomAppBarget elevation tint by default. Not considered style breaking becauseBottomAppBarwas not supported before in M3. In M3 mode a minor spec deviation was noted in Flutter SDK and reported here flutter/flutter#118150. -
The Material buttons
ElevatedButton,OutlinedButtonandTextButon, now only create custom sub-theme properties in Material 3 mode when using none default (none null) values. Previously, they created sub-themes for some properties corresponding to the default values. This task now falls to the role of default widget behaviour, as it should. Effective styles are unchanged. -
When making seed generated
ColorSchemewith a customsurfaceTintcolor. This tint color is now also used as seed-key for the neutral and neutral variant tonal palettes. Flutter SDK can only use primary color as seed-key for the neutral colors. This limitation in Flutter makes using a customsurfaceTintin seededColorSchemesless usable with often unappealing results. This happens because the custom tint color then differs from the slightprimarytint that is hard coded into Flutter's seeded neutral colors used for surfaces and backgrounds, and the colors may clash. In FlexColorScheme the custom tint color is automatically also used to slightly tint the neutral colors used for surfaces and backgrounds in the seed-generatedColorScheme. The same color is then also used asColorScheme.surfaceTintcolor. This makes the custom elevation tint color match the custom seed-tinted surface and background colors. This feature is enabled by the FlexSeedScheme package starting from version 1.2.0-dev.1. When using a customsurfaceTintcolor, the same color is also used as the surface alpha blend color, when usingSurfaceModeandblendLevelto adjust surface color with or without using seed generatedColorScheme. Ensuring that neutral seed tint, elevation and surface blend color always match, as they should. -
Changed, or one could call it fixed
SnackBarThemeaction and close icon colors. They are now also themed automatically to fit on selected SnackBar color. -
The boolean
FlexSubThemesData.interactionEffectsno longer modifiesThemeData.disabledColor. This part of the control is now instead controlled separately byFlexSubThemesData.tintedDisabledControls. -
The
InputDecorationTheme, can now be configured to match Material 3 for critical styles if so desired. It uses a few opinionated values that give it a slightly different style by default. It can be configured to match M3 defaults if so desired. FCS does one opinionated adjustment to error border and suffix icon. It keeps themerrorcolored on unfocused-hovered error state, instead ofonErrorContainer. The M3 default looks odd. This FCS change is considered an opinionated M3 style fix in FCS. The M3 default of setting unfocused hovered error floating label also toonErrorContainer, is also keeping FCS own past styleerror.withAlpha(0xA7), which looks more refined. There is currently no way to set these settings back to the M3 default style within FCS. You can of course as always adjust them and anything withcopyWithon producedThemeDataif needed. -
Added M3 slider support with correct
DropSliderValueIndicatorShapein M3 mode. -
Added theming for
TimePickerthat corrects Flutter SDK issue flutter/flutter#118657 when using FCS component sub-themes. -
Made
tabBarStyleinFlexColorScheme,FlexColorScheme.light,FlexColorScheme.dark,FlexThemeData.lightandFlexThemeData.darknullable and null by default. In M2 modetabBarStyledefaults toFlexTabBarStyle.forAppBaras before. However, in M3 mode, if not defined, it defaults toFlexTabBarStyle.flutterDefault, producing a style matching M3 default TabBar.
THEMES PLAYGROUND
NEW
- Add UI to set elevation and background color of modal and none modal
BottomSheetindependently. - Removed used
Typographyworkaround in Playground app. Workaround was used before due to issue flutter/flutter#103864 that is now fixed in Flutter by flutter/flutter#110870. - Improved codegen for used Typography selection, it is now only shown when needed.
- Improved codegen for when FlexColorScheme is not used at all. It can now use the setting for using Material 3 and Typography. It still does not support generating code for the active
ColorScheme, when FCS is not in use. - Added UI for theming
FilledButtonandFilledButton.tonal, see issue: flutter/flutter#115827 for info on current theming limitations in the SDK for these new buttons. - Added UI for
useM2StyleDividerInM3to panel Component Themes with name "Use Material 2 styled Divider in Material 3". Playground defaults this setting to ON (true), but default in API is false. Rationale for keeping it on in the Playground when using component sub-themes; it just looks better than M3:s new default (opinionated). When using M3 and FCS component themes, for a true M3 styledDivider, turn OFF the setting. - Added showing
SegmentedButtonin panel Selection Buttons and to Widget Showcase. - Added settings for
SegementedButtonto control its colors, border radius and width. - Added showing
DrawerandNavigationDrawerin the new Drawer panel and to the Widget Showcase. Also added controls to theme color, border radius and elevation of theDrawer. The border radius follows the global border radius setting if it is used. - Added showing
BottomAppBarin panel AppBar and also to the Widget Showcase. - Added
BottomAppBarelevation setting to Playground in panel AppBar. - Added showing new M3
DropdownMenuin panel Text Field, Menu and to Widget Showcase. - Added showing new M3
MenuBarin panel Menu and to Widget Showcase. - Added showing new M3
MenuAnchorin panel Menu and to Widget Showcase. - In panel Menu the previous controls for
PopuMenuButtonnow also control the menu style ofDropdownMenu,MenuBarandMenuAnchor. - Added setting for focused
TextFieldhas a border to panel Text Field. - Added setting for border color selection of
TextFieldto panel Text Field. - Added setting for alpha control of
TextFieldbackground color to panel Text Field. - Added a button in panel Text Field, that can set
TextFieldsettings to match M3 default style. - Added setting for scrolled under elevation of
AppBarto panel AppBar. - Added settings for unselected button and border colors for
ToggleButtonsto panel Toggle Buttons. - Added showing
RangeSliderin panel Slider and to Widget Showcase. - Added settings for
Slidervalue indicator color, visibility and value indicator type. - Added setting for time picker input element border radius to pane Dialogs.
FIX
-
ListTiles in the Themes Playground App must use and set transparent
tileColorin M3, until a fix for flutter/flutter#117700 lands via flutter/flutter#117965. By doing this the ListTiles in the app will look OK also when FlexColorScheme theming is not used, even if issue #117965 might still be in effect. May not need this work around in V7.0 release if the issue does not land in new Flutter stable after 3.3, follow-up. -
Fixed Material Showcase surface tint and shadow presentation to support changes in
Materialin Flutter release.