Releases: rydmike/flex_color_scheme
Version 7.0.5
7.0.5
Apr 29, 2023
- Fix: #143 Glitches in highlighting effect on mouse hover over
FlexThemeModeSwitchandFlexThemeModeOptionButton.
Version 7.1.0-dev.1
7.1.0-dev.1
Apr 24, 2023
This beta-1 of FlexColorScheme v7.1.0. It is a dev release using Flutter 3.10 beta channel. It requires Flutter version 3.10.0-1.3.pre or later. This beta version is a first preparation version of FlexColorScheme for the next stable Flutter release after version 3.7.x.
NEW
- Added
datePickerThemetoFlexSubThemes. - Added properties
datePickerDialogRadiusanddatePickerHeaderBackgroundSchemeColortoFlexSubThemesData.
THEMES PLAYGROUND
-
NEW
- Added selection of themed header color scheme color for the DatePickerDialog on the Dialogs panel.
- Added showing SearchBar with SearchView to the AppBar panel.
- Added showing SearchBar with SearchView to the Widget Showcase.
-
UPDATE
- Reviewed and updated status of all known theming issues in info expands.
-
SKIA
- The SKIA canvaskit renderer is again being used to build all the web examples, including the Themes Playground.
- The beta-1 version of Themes Playground 7.1 for FCS 7.1 can be tested here.
Version 7.0.4
7.0.4
Apr 22, 2023
- Package
- No changes.
- Themes Playground
- FIX: AppBar setting for using platform adaptive scroll under elevation tint removal was not working correctly. UI bug in Playground only, no package impact.
Version 7.0.3
7.0.3
Apr 19, 2023
- Fix #136 default background color regression on
FlexThemeModeSwitchandFlexThemeModeOptionButton.
Version 7.0.2
7.0.2
Apr 16, 2023
- Chore: Changed to using
flex_seed_scheme: ^1.2.4that depends onmaterial_color_utilitieswith version constraint set to>=0.2.0 <0.4.0from^0.2.0.- This change enables the package to be used on current Flutter stable 3.7 versions, as well as the latest 3.10.x versions on channels beta and master. It will also work with the next stable Flutter release after 3.7.
Version 7.0.1
7.0.1
Apr 6, 2023
- Package
- No changes.
- Themes Playground
- Less chatty UI
- Revised media size breakpoints.
- Vertical color selector mode.
- More compact UI options for smaller laptop displays and tablets.
Version 7.0.0
7.0.0
Apr 2, 2023
This is a major update to the FlexColorScheme package and a substantial leap for the companion app Themes Playground. For a detailed list of all changes, please refer to the incremental log from its development release linked below.
-
Changes from 7.0.0-dev.3 to 7.0.0
- Package: Only tests and documentation additions and updates.
- Playground: Label and layout corrections.
The Themes Playground app built for this release is unfortunately not a SKIA renderer build, it is using the HTML renderer. This makes it less performant than the app would otherwise be. Additionally, scaled content, like the Themes Simulator panel in the Playground, is also fuzzier than it would be with the SKIA renderer. Due to an issue in Flutter stable 3.7.0 to at least 3.7.9, builds made with the SKIA renderer performs very poorly and crash quickly. For more information, see Flutter issue #122189. A new build using the same package version will be made later and released when a fix for the SKIA issues are available on the Flutter stable channel.
Version 7.0.0-dev.3
7.0.0-dev.3
Mar 18, 2023
This is the final beta v7 release before stable v7. There will be no new features or API changes in the FlexColorScheme package from this version to stable version 7.0.0. The only changes to stable will be potential bug fixes, typo corrections, API doc comment improvements and adding more tests.
The companion app Themes Playground, may get label improvements plus spelling and grammar corrections. Layouts in it may also be modified and improved as needed. It will not get any new features, but it may of course receive bug fixes.
The Themes Playground app built for this beta release is unfortunately not a SKIA renderer build, it is using the HTML renderer. This makes it less performant than the app would otherwise be. Additionally, scaled content, like the Themes Simulator panel in the Playground, is also fuzzier than it would be with the SKIA renderer. Due to an issue in Flutter stable (3.7.7), builds made with the SKIA renderer performs very poorly and crashes quite quickly. For more information see Flutter issue #122189. Hopefully, before the stable v7.0.0 release, a fix will be available. If not, a new build using the same package version will be made later and released when a fix is available.
FIX
-
Fixed bug in legacy theme secondary and tertiary color swapping when using seed generated ColorScheme. In dark mode, combining legacy swapping and seed generation did not swap secondary and tertiary colors for schemes where it should do so. This is now fixed. If seed generation was not used, the swapping worked correctly in dark mode. In light mode it worked correctly also when seed generated schemes were used. The
swapLegacyOnMaterial3feature was introduced in version 6.1.0, it has had this bug for this case since it was introduced. -
Fixed bug where
FlexSubThemes.drawerThemewas usingBorderRadiusDirectional.horizontalwithendradius instead ofstartradius as itsendShape. This bug was introduced by version 7.0.0-dev.1 and has not been in any stable version. -
The
FlexThemeModeOptionButtonnow correctly displays itshoverColor, previously it was obscured by the colored boxes inside it. -
The systemNavigationBarDividerColor issue #100027 in Flutter that in FCS v5 forced removing support for divider on the system navigation bar in Android, that was available via
FlexColorScheme.themedSystemNavigationBarhas been fixed. The issue could no longer be observed on Android versions 8 to 13 on Flutter 3.7.7 stable. The divider has been enabled again, and its test setting is also available in the Themes Playground app again. The extraSystemUiOverlayStylecall used as a work-around, for the same issue to fix an issue with Android 11, has also been removed, since the workaround was no longer needed. -
Fixed a bug where when passing in a custom
textThemeorprimaryTextTheme, instead of defining text theme viafontFamily, that FCS tinted text feature, viasubThemesData.blendTextTheme, was not being correctly applied to the custom text themes. This is now fixed. IfsubThemesData.blendTextThemeis not being used, then the used Typography, either viasubThemesData.useTextTheme, or by using a customFlexColorScheme.typographyoverride, always gets correct brightness for bothtextThemeandprimaryTextTheme, regardless of brightness on passed in text themes. They also get the used Typography appropriate opacities on their text styles. In practice, this means that M2 style 2018 typography has opacity on some text styles, while M3 style 2021 typography, is fully opaque for all text styles.
NEW
-
Add:
drawerIndicatorOpacitytoFlexSubThemesData.
It controls theindicatorOpacityproperty in theFlexSubThemes.navigationDrawerThemeused to customize the opacity of used color on theNavigationDrawerindicator. -
Add:
segmentedButtonUnselectedForegroundSchemeColortoFlexSubThemesData.
It controls theunselectedForegroundSchemeColorproperty in the newFlexSubThemes.segmentedButtonThemeused to customize theSegmentedButton. -
Add:
usedColorsvalue 7.
InFlexColorSchemeandFlexThemeDatalight/dark constructors, theusedColorsnow accepts value 7. When used, theprimary,secondaryandtertiarycolors in the used input scheme, are used as defined, butprimaryContainer,secondaryContainerandtertiaryContainerare computed. This is FlexColorScheme's own more Material2 version of seed generation of the container colors by using their main colors as input colors. -
Add:
bottomAppBarTheme,menuBarThemeandmenuButtonThemetoFlexSubThemes. -
Add:
inputDecoratorPrefixIconSchemeColor,drawerWidth,drawerIndicatorWidth,drawerIndicatorRadius,drawerIndicatorSchemeColor,navigationBarIndicatorRadius,navigationRailIndicatorRadius,menuBarRadius,menuBarElevation,menuBarShadowColor,snackBarActionSchemeColorandbottomAppBarSchemeColortoFlexSubThemesData. -
Add:
menuRadius,menuElevation,menuOpacity,menuSchemeColoranddropdownMenuTextStyletoFlexSubThemesData. -
Add:
drawerSelectedItemSchemeColor,drawerUnselectedItemSchemeColor,tabBarIndicatorSize, andtabBarDividerColortoFlexSubThemesData. -
Add: Static helper function
onSchemeColortoFlexSubThemes. -
Add: To
FlexThemeModeOptionButtonadded propertiessemanticLabel,focusColorandsetFocusOnTap. IfsetFocusOnTapis set to true, the button will request focus when it is tapped. Display of previously not shown hover and focus effects where fixed, they now correctly usehoverColorand the newfocusColor. -
Add: Property
snackBarRadiustoFlexSubThemesData, it controls the border radius viaFlexSubThemes.snackBarThemeby using itsradiusproperty.- NOTE: If this property is set, both SnackBars with behavior fixed and floating will get the assigned radius. See Flutter issue: flutter/flutter#108539
-
Add: Properties
tabBarUnselectedItemSchemeColor,tabBarUnselectedItemOpacity,tabBarIndicatorWeightandtabBarIndicatorTopRadiustoFlexSubThemesData. -
Add: New configuration class
FlexAdaptiveused to configure on which platforms adaptive theming features are used. Including 100% unit test coverage for the new class. -
Add: Four new
FlexSubThemesDataproperties that uses theFlexAdaptiveconfiguration class, to configure the featuresadaptiveRemoveElevationTint,adaptiveElevationShadowsBack,adaptiveAppBarScrollUnderOffandadaptiveRadius. TheadaptiveRadiuscontrols if thedefaultRadiusAdaptiveis used as value for effective global border radius instead ofdefaultRadius. -
Add: Seven new
FlexSubThemesDatapropertiesmenuBarBackgroundSchemeColor,menuPadding,menuItemBackgroundSchemeColor,menuItemForegroundSchemeColor,menuIndicatorBackgroundSchemeColor,menuIndicatorForegroundSchemeColorandmenuIndicatorRadius. -
Add: Boolean property
useInputDecoratorThemeInDialogstoFlexSubThemesData. Used to control if the application's themed input decoration is used or not, on time picker dialog theme text input fields. If not used, the time picker dialog uses null as input to its input decorator, in order to get the Flutter time picker default style. This toggle will also be used on date picker when/if it gets supported.
CHANGE
-
Style breaking:
FlexSubThemes.blendTextThemedefaults to false.
In FCS before version 7, the default forblendTextThemeinFlexSubThemeswas true, and blended text themes were used by default. Going forward if you want it, and also if you had not defined earlier and do not want to break your apps past style, setblendTextThemeto true. -
Style breaking:
Cardelevation default 1 dp.
TheCardopinionated sub-theme now defaults to null elevation, resulting in same default of 1 dp elevation as Flutter SDK in both M2 and M3 mode. Previously, FCS defaulted to elevation 0 dp onCardswhen opting in on sub-themes. -
Style breaking:
ColorScheme.outlineandColorScheme.outlineVariant.
The FCS built-in computed none seeded values forColorScheme.outlineandColorScheme.outlineVariantwere modified. The new values are more in line with what you get with the M3 default seed algorithm, but plain grey-scale variants of them without any primary color blend. Technically light mode color foroutlinewas changed from 30% lighten of light modeonBackgroundcolor to 45%, andoutlineVariantfrom 60% lighten ofonBackgroundto 75%. Likewise for the dark mode, but with darkening of theonBackgroundwith the same percentage changes. The new values match the M3 design intent better. -
Style breaking:
lightSurfaceVariantanddarkSurfaceVariant.
FCS v7 introducesFlexColor.lightSurfaceVariantandFlexColor.darkSurfaceVariantcolors that are used when making none-seeded ColorSchemes. The colors are plain not tinted light and greys, matching the grey level of the tinted versions you get with seed-generated M3 colors. The colors are used as defaults for light and darksurfaceVariantcolor in none-seeded versions of generated FlexColorScheme color schemes. In previous versionssurfaceVariantwas just white and black in light and dark theme mode. To be able to better match the M3 color system, without using seed generation, this surface color should not be just white or black. The newsurfaceVariantcorrects this past design to improve compatibility with the M3 color system when not using seed generated color schemes. -
Style breaking:
NavigationBar
Changed the defaultNavigationBarh...
Version 7.0.0-dev.2
7.0.0-dev.2
Jan 25, 2023
CHANGE
- Updated to require minimum Flutter stable 3.7.0, compared to 7.0.0-dev.1 that required beta 3.7.0-1.4.pre.
- Updated to stable release of FlexSeedScheme ^1.2.0.
FIX
- Fix new scheme
redM3faulty dark mode colors.
THEMES PLAYGROUND
- CHANGE: Explanation for
SegmentedButton. - CHANGE: Intro text, to say that M3 in Flutter SDK is now ready for production.
- FIX: Wrap for
PopupMenuButton. - ADD: ThemeShowcase now includes
Badge, so it gets featured as well.
TODO BEFORE FCS STABLE 7.0 RELEASE
-
MUST DO: Review and do actionable TODOs in the code.
-
MUST DO: Review and fix test coverage. Test new colors too.
-
MUST DO: Review and test all tutorial examples.
-
MUST DO: Add important changes to docs.flexcolorscheme.com:
- Changelog.
- ListTile transparent added to core defaults, may not be needed. Review before release.
- Update known Flutter M3 and theming impacting issues. Remove fixed ones, add new known ones. (Slider update issue, not yet reported.)
- Info section (plus article later) about what is still missing in Flutter 3.7 from M3.
-
After release, more updates to FlexColorScheme docs:
- New color scheme images
- Review and update older screenshots and GIFs.
- Use image zoom feature in docs.page more on current images.
- Use new highlight banners feature, in the docs.page tool when appropriate.
-
MAYBE: Make tinted disabled controls apply consistently to all controls when applied.
-
MAYBE: Make tinted interaction effect apply consistently to all controls. New M3 widgets need to define it in their own sub-themes to get them, they don't use the hover, focus, highlight color from ThemeData for their defaults.
Postponed TODOs, that were planned for FCS stable 7.0, but moved forward to 7.1 or later.
- Add more sub-theme component color presentations to the Playground's Component Themes panel.
- Add some theming options for the new NavigationDrawer theme.
- Add some theming options for the new MenuBar theme.
- Add more "Set to M3 design" buttons like on Text Field panel, e.g. to Navigation Bar and Navigation Rail panels.
- To TabBar theming, add unselected color, not selected dim/undim and custom bottom borderline color.
Version 7.0.0-dev.1
7.0.0-dev.1
Work in progress!
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 slightly tuned to better align with new Material 3 widgets and design, included in the Flutter 3.8/4.0 (?) release. The new features are also significant.
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 custom brand color values you used as keys. -
Added support for new
ColorSchemecolorsscrimandoutlineVariant. -
Added support for
fontFamilyFallbackandpackageso that 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 does not yet exist in Flutter beta 3.7.0-1.4.pre. It is thus unsure if it will land in next stable Flutter, if it does not it will be commented and removed for the next FCS release as well. -
Added boolean
tintedDisabledControlstoFlexSubThemesData. If set to true, disabled widgets will get a hint of 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 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. Default 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 change on tinted disabled components when opting in on
tintedDisabledControls. 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. -
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 we no longer need the workaround. -
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. In M3 mode a minor spec deviation was noted in Flutter SDK and reported here flutter/flutter#118150. -
Changed FlexColorScheme default
BottomAppBarcolor 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. -
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 back to the role of default widget behaviour, as it should. Effective styles are unchanged. -
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. -
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 ne...