Skip to content

Releases: rydmike/flex_color_scheme

Version 3.0.1

01 Jul 15:54
Compare
Choose a tag to compare

[3.0.1] - July 1, 2021

  • Fix: The internal order of swapping primary and secondary colors and reducing
    used colors in static function FlexSchemeColor.effective(FlexSchemeColor colors, int usedColors, {bool swapColors = false}) matters for the intended result when
    used together in the same call. The function now swaps primary and secondary colors,
    before reducing the used colors.
  • Tests: Added tests for above fix that captures the issue and fails
    in version 3.0.0. Total 741 tests, coverage 99.75%.
  • Documentation and typo fixes.

Version 3.0.0

26 Jun 17:52
Compare
Choose a tag to compare

[3.0.0] - June 25, 2021

  • Breaking: The color accentColor is being deprecated in Flutter SDK ThemeData starting
    from version v2.3.0-0.1.pre.
    Usage of accentColor in FlexColorScheme is removed to support this
    transition. The property is deprecated in FlexColorScheme, but is still present. Its
    usage does however no longer have impact on produced themes, this is a potential breaking change.
    The probability that you might have used it as a property in your
    FlexColorScheme based theme is low. It was set before to primary color
    in FlexColorScheme, as a way to make the highlight color of outlines and underlines on
    text field boxes primary colored in dark theme mode, and not secondary/accent colored as they used
    to bve in Flutter's default dark theme mode. The old accentColor was
    not used for anything else in themes anymore when using FlexColorScheme.
    The property is now going away totally
    in Flutter SDK. The default ThemeData in Flutter SDK in dark mode now creates a
    theme for outline and underline indicators on input fields that are based on primary color,
    just like FlexColorScheme does and already did before. Flutter SDK no longer uses
    accentColor for it. The resulting default dark mode style on text fields thus now remain
    unchanged in FlexColorScheme even with this definition removed. If you
    had used accentColor in FlexColorScheme as a short-cut to define a different text field
    outline or underline highlight color in dark theme mode than primary color, then you will need to
    recreate it via text field decoration theming.

  • New: The FlexColorScheme.dark and FlexColorScheme.light factories have a new
    property called swapColors. If true, this will swap primary and primaryVariant
    colors with their secondary counter-parts.

    This flag can be set to true if you want to make a theme where your primary and secondary
    colors are swapped compared to their definition. It is useful if you want to quickly
    swap primary and secondary colors when using the pre-defined color
    schemes or with computed dark schemes from light schemes. It doubles the
    variation possibilities of themes based on the pre-defined color schemes.

    If you are explicitly defining all you light or dark scheme colors, you can of course define
    them in desired order. This feature will still swap whatever
    colors you defined for primary and secondary when set to true. You can thus also
    use this feature as an easy end-user modifiable theme option, if you like
    to offer the capability to toggle the primary and secondary theme colors the
    other way around.

  • New: The static function FlexSchemeColor.effective(FlexSchemeColor colors, int usedColors, {bool swapColors = false}) is used to implement the above
    swapColors feature. It also exposes the logic behind the FlexColorScheme
    dark and light theme usedColors property. This static method is helpful if
    you need to compute effective built-in theme colors externally to FlexColorScheme
    to present the active theme, based on these settings. This is used by example 5
    to change the colors on the theme mode switch when the swap color settings
    is toggled. The usedColors property is not shown in any bundled
    example, but it can be used the same way.

  • New color schemes: Added four new built-in color schemes.

    • Bahama and trinidad - Bahama blue and trinidad orange colored theme.
      Use enum value FlexScheme.bahamaBlue for easy access to it.
    • Mallard and valencia - Mallard green and Valencia pink colored theme.
      Use enum value FlexScheme.mallardGreen for easy access to it.
    • Espresso and crema - Espresso dark brown and crema colored theme.
      Use enum value FlexScheme.espresso for easy access to it.
    • Outer space stage - Outer space dark blue-grey and stage red theme.
      Use enum value FlexScheme.outerSpace for easy access to it.

    Inspired by MaterialYou at GoogleIO 2021, I recently hooked up FlexColorScheme
    with an algorithm that extracts prominent colors from images. Then fed these
    colors to FlexColorScheme to make themes from them. The above new color schemes in
    release 3.0.0 came from these image based theme experiments. You can see examples
    of FlexColorScheme making color schemes and themes from images in my Tweets about it.
    This was a first quick test
    of the idea, later I added some more features to it, here and here. This
    quick test shows that FlexColorScheme is very versatile.

  • Tests: Added tests for the new features and removed test related to
    accentColor. Total 736 tests, coverage 99.76%.

Version 2.1.1

30 Mar 20:02
Compare
Choose a tag to compare

[2.1.1] - March 30, 2021

  • Change: Made the VoidCallback onSelect in FlexThemeModeOptionButton nullable.
    The optional callback allows for the button to be used e.g. as a trailing
    widget in a ListTile. Keep it null to not have any callback, nor hover or Ink of its own, and use
    the select event of the parent instead. When it is used as standalone button you
    normally want to use this callback, but not if you want the parent to handle it, that use case was
    not allowed with previous version.

Version 2.1.0

21 Mar 22:27
Compare
Choose a tag to compare

[2.1.0] - March 22, 2021

  • Fix: Toggling FlexColorScheme(transparentStatusBar) from true to false, did not restore the
    Android default status bar scrim, unless the app was completely rebuilt. This has been fixed.
  • Fix: When using FlexColorScheme.themedSystemNavigationBar(useDivider) in an AnnotatedRegion, toggling
    useDivider from true to false, did not remove the system navigation bar divider again, unless the
    app was completely rebuilt. This has been fixed, see API docs for more info.
  • Feature: The FlexColorScheme.themedSystemNavigationBar for styling the system navigation bar got a
    new convenience property systemNavBarStyle that takes a FlexSystemNavBarStyle enum with values:
    • system: For default white system nav bar in light theme and black in dark theme mode.
    • surface: The system navigation bar will be the same color as active theme colorScheme.surface color.
      If your FlexColorScheme definition is set to use primary branded surface and background colors, the
      same primary color blend that the surface color has received will be used.
    • background: The system navigation bar will be the same color as active theme colorScheme.background color.
      If your FlexColorScheme definition is set to use primary branded surface and background colors, the
      same primary color blend that the background color has received will be used.
    • scaffoldBackground: The system navigation bar will be the same color as active theme scaffoldBackground color.
      If your FlexColorScheme definition is set to use primary branded surface and background colors, the
      same primary color blend that the scaffoldBackground color has received will be used.
    • transparent: An experimental feature. The goal is to make the system navigation bar fully transparent,
      showing the background, while navigation buttons float over the background. This feature only works if it is
      also configured in the Android embedder and on SDK 30 or higher.
      More information in this example: https://github.com/rydmike/sysnavbar
  • Examples: Added top status bar scrim toggle and system navigation divider and navbar style toggles to example 5.
    These only work on Android builds and do not have any functionality on the live Web builds.
  • Tests: Added tests for the new features. Total 690 tests, coverage 99.76%.

Version 2.0.0

15 Mar 06:54
Compare
Choose a tag to compare

[2.0.0] - March 15, 2021

  • First stable release of FlexColorScheme with sound null safety.
  • Includes the changes from [2.0.0-nullsafety.1] and [2.0.0-nullsafety.2].
  • Breaking: The by default enabled divider for FlexColorScheme.themedSystemNavigationBar has been
    revised to be disabled by default. To use a divider on the top of the system navigation bar on Android,
    you have to enabled it manually. This is more in line with expected default behavior.

Version 2.0.0-nullsafety.2

15 Mar 06:12
Compare
Choose a tag to compare
Pre-release

[2.0.0-nullsafety.2] - March 15, 2021

  • Migrated AppBar theming to use the implementation introduced in Flutter 2.0.0 instead of using
    its own custom implementation for the "white" app bar theme.

  • Minor change to the none default tooltipsMatchBackground: true border style, it now uses
    the theme divider color as its default outline color.

  • The static helper FlexColorScheme.themedSystemNavigationBar received three new properties
    noAppBar, invertStatusIcons and systemNavigationBarDividerColor. The old property
    nullContextBackground was deprecated and replaced with systemNavigationBarColor. Example 5
    has been updated to show how and when the new features can be used.

  • As stated earlier in the documentation, as a planned change for version 2.0.0 the sub theme for
    FloatingActionButtonThemeData was removed. It is thus now null as in default Flutter ThemeData.
    It still produces the same default theme as before, the ThemeData definition was just no
    longer needed to do so.

  • Number of tests increased from 639 to 661. Coverage 99.78%.

  • Updated the documentation. Added thumbnails to Appendix A. This pub.dev version is also to test the
    thumbnails work and how they look on pub.dev before stable 2.0.0 release.

    See API documentation for more information.

Version 2.0.0-nullsafety.1

04 Feb 04:01
Compare
Choose a tag to compare
Pre-release

[2.0.0-nullsafety.1] - February 4, 2021

  • First version with null-safety.
  • Additional breaking: Removed in version 1.3.0 deprecated FlexSchemeSurfaceColors.themeSurface, use
    FlexSchemeSurfaceColors.surfaceStyle instead.
  • Number of tests reduced from 723 to 639 when all null related tests were removed.

Version 1.4.1

31 Jan 03:20
Compare
Choose a tag to compare

[1.4.1] - January 31, 2021

  • Added four new built-in color schemes.

    • Barossa - Barossa red and cardin green theme.
      Use enum value FlexScheme.barossa for easy access to it.
    • Shark and orange - Shark grey and orange ecstasy theme.
      Use enum value FlexScheme.shark for easy access to it.
    • Big stone tulip - Big stone blue and tulip tree yellow theme.
      Use enum value FlexScheme.bigStone for easy access to it.
    • Damask and lunar - Damask red and lunar green theme.
      Use enum value FlexScheme.damask for easy access to it.
  • Improved Semantics for the ThemeMode Widget buttons.

  • Improved FlexThemeModeSwitch widget tests, makes and checks for system mode changes.

  • More tests, totally 723 tests, codecov is now > 99.5%.

  • Added GitHub actions to automate build and to publish the examples on the Web on a new release.

  • Minor changes to the examples. Modified to not need the late keyword when they are converted
    to null safe versions.

  • Documentation:

    • Added the new color schemes to the documentation.
    • Minor typo corrections.

Version 1.4.1 Pre-release

30 Jan 21:52
Compare
Choose a tag to compare
Pre-release

[1.4.1] - January 30, 2021 - Pre-release to test Web Example build trigger

  • Added four new built-in color schemes.

    • Barossa - Barossa red and cardin green theme.
      Use enum value FlexScheme.barossa for easy access to it.
    • Shark and orange - Shark grey and orange ecstasy theme.
      Use enum value FlexScheme.shark for easy access to it.
    • Big stone tulip - Big stone blue and tulip tree yellow theme.
      Use enum value FlexScheme.bigStone for easy access to it.
    • Damask and lunar - Damask red and lunar green theme.
      Use enum value FlexScheme.damask for easy access to it.
  • Improved Semantics for the ThemeMode Widget buttons.

  • Improved the widget tests, makes and checks for system mode changes. Totally 723 tests, codecov > 99.5%.

  • Added GitHub actions to automate build and publish the examples on the web.

  • Minor changes to the examples. Modified to not need the late keyword when they are converted
    to null safe versions.

  • Documentation:

    • Added the new color schemes to the documentation.
    • Minor typo corrections.

Version 1.4.0

18 Jan 04:17
Compare
Choose a tag to compare

[1.4.0] - January 18, 2021

  • Added convenience property scheme to FlexColorScheme factories light and dark. This a shortcut for using the built-in color schemes. The colors property can still be used as before. The .light and .dark factories no longer have any required properties. If scheme is not provided it defaults to FlexScheme.material and if both scheme and colors are provided, the scheme provided via colors prevail.
  • Updated the simple example 1 to use the new scheme property, as in theme: FlexColorScheme.light(scheme: FlexScheme.mandyRed).toTheme.
  • Added experimental support for transparent system navigation bar for Android for SDK >= 30 (Android 11).
    The support is added via new opacity property in FlexColorScheme.themedSystemNavigationBar.
    A separate example that builds on example 5, shows and explains how and when transparent system navigation bar can be used in Android. It also shows how to design it so that it looks nice when using primary color branded background color applied to the system navigation bar in Android, when transparency is not supported, and your app uses transparent system navigation bar when running on an API level that supports it. Please see this separate small stand-alone example Android project sysnavbar on GitHub for more information.
  • Added more tests, now 689 tests. All color values used are now also tested, any modification to them is considered a breaking change. A bit more tests would still be nice, for the ThemeModeSwitch Widget at least. Total test coverage > 98%, it will do for now.
  • Documentation:
    • Changed example one and the intro, to use the new simpler scheme property when using built-in schemes.
    • Added a section that lists which sub-themes, and which of their properties, are NOT null when creating a theme data object with FlexColorScheme.toTheme.
    • Removed the "back to contents" link after each chapter. It was nice and worked fine on Github, but for some reason it did not on pub.dev.
    • Tried finding and adding comments for the 3 missing API comments needed to reach 100% API documentation comments, not sure if it succeeded. I will see when the update is published.