flex_color_picker

A highly customizable Flutter color picker.

BSD-3-CLAUSE License

Stars
197
Committers
10

Bot releases are hidden (Show)

flex_color_picker - Version 3.6.0

Published by rydmike 24 days ago

3.6.0

September 25, 2024

NEW

The ColorPicker got the following new properties and features:

  • Boolean showEditIconButton, defaults to false.

    • Whether to show an edit icon button before the color code field. The edit icon button can be used to give users a visual que that the color code field can be edited. When set to true, the icon button is only shown when the wheel picker is active and colorCodeReadOnly is false. Tapping the icon button will focus the color code entry field.
    • Feature included in updated web demo app: YES
  • IconData editIcon, defaults to Icons.edit.

    • The icon to use on the edit icon button.
    • Feature included in updated web demo app: NO, only default icon used.
  • Boolean focusedEditHasNoColor, defaults to false.

    • Whether the color code entry field should have no color when focused. If the option, to make the color code field have the same color as the selected color is enabled via colorCodeHasColor, it makes it look and double like a big color indicator that shows the selected color. This can also make the edit of the color code confusing, as its color on purpose also changes as you edit and enter a new color value. If you find this behavior confusing and want to make the color code field always have no color during value entry, regardless of the selected color, then set this option to true.
    • Feature included in updated web demo app: YES
  • Boolean tonalPaletteFixedMinChroma, defaults to false.

    • Whether the tonal palette uses a fixed minimum chroma value for all tones, or if it uses the chroma value of the selected color. Prior to version 3.6.0, the tonal palette used minimum chroma value of 48 or chroma of the selected color. This was the default primary tonal palette behavior in Flutter's ColorScheme.fromSeed method before Flutter version 3.22.0. Starting from FlexColorPicker version 3.6.0, the picker creates a HCT color space tonal palette using whatever hue and chroma the selected color has. If you for some reason want to use the old behavior, set this property to true. This will make the tonal palette use the fixed minimum chroma value of 48 for all tones.
    • Feature included in updated web demo app: YES

FIX

  • Since version 3.4.0 the value of property ColorPickerCopyPasteBehavior.editUsesParsedPaste had no impact on the picker's paste behavior when the color code text field was focused. The color picker always behaved as if this property was true. Which incidentally is the behavior that pretty much all uses cases should use. This feature now again works as stated in its doc comments. However, the default value was changed from false to true, to match the actual default behavior it has had since version 3.4.0, and the behavior that should be preferred. The false setting was there to provide color code text field paste behavior backwards compatibility with versions before 2.0.0. We may deprecate this property in a future version, as it is not really recommended to use false at all, but for now it is fixed again.

TESTS

  • Improved the test coverage of the ColorPicker.
flex_color_picker - Version 3.5.1 Latest Release

Published by rydmike 4 months ago

June 28, 2024

CHORE

  • Update FlexSeedScheme to min version 3.0.0.
  • Update example app dependencies to latest versions.
flex_color_picker - Version 3.5.0

Published by rydmike 5 months ago

3.5.0

May 15, 2024

Requires min Flutter 3.22.0.

No new features or fixes in this release. A version bump to use FlexSeedScheme 2.0.0 compatible with Flutter version 3.22.0 and its new breaking ColorScheme.

The ColorPicker contains no breaking changes, but underlying Flutter does, and this version is only compatible with Flutter 3.22.0 and later.

NEW

  • Added property mainAxisSize to ColorPicker and showColorPickerDialog, it controls the vertical axis size of the picker's column layout. Defaults to MainAxisSize.max as before, like Columns do by default. The property was added to enable setting the dialog to use MainAxisSize.min if needed.

FIX

  • Fix wheel picker jumping to BW or custom picker under certain conditions.
    • When the wheel picker's opacity value is not 100, moving the color picker cursor to the white corner or bottom black edge of the color box triggers a jump. It auto-selects BW or a custom picker containing black or white values. This is now fixed. The picker cursor will stay in the wheel picker, and the color box will not jump to BW or custom picker when the cursor is moved to the white corner or bottom black edge of the color box.
  • Improved and updated API documentation for ColorPicker properties color and onColorChanged.
  • Fixed typos and language in the readme.
flex_color_picker - Version 3.5.0-dev.1

Published by rydmike 5 months ago

3.5.0-dev.1

May 13, 2024

Requires min Flutter 3.22.0 and Dart 3.4.0.

No new features or fixes in this release. A version bump to use FlexSeedScheme 2.0.0 compatible with Flutter version 3.22.0 and its new breaking ColorScheme.

The ColorPicker contains no breaking changes, but underlying Flutter does and this version is only compatible with Flutter 3.22.0 and later.

flex_color_picker - Version 3.4.1

Published by rydmike 7 months ago

3.4.1

Mar 16, 2024

FIX

Package

  • Fixed #81 The property tonalSubheading in the convenience dialog function showColorPickerDialog was never passed along to the ColorPicker used to construct the dialog, causing the tonal sub heading to never show up in the resulting dialog.

New

Web demo

  • There is now a color picker in the web demo app also using and demonstrating the usage of the optional convenience showColorPickerDialog function.
flex_color_picker - Version 3.4.0

Published by rydmike 8 months ago

3.4.0

Mar 3, 2024

Requires min Flutter 3.16.0 and Dart 3.0.0.

NEW

  • Added enum values filled and filledTonal to ColorPickerActionButtonType and added support for these button styles as OK/Cancel buttons in the ColorPicker dialog.
  • Added dialogActionOnlyOkButton to ColorPickerActionButtons. Defaults to false. If set to true and dialogActionButtons is true, only the OK button will be shown.
  • Added support for a second custom color palette to the picker. In addition to ColorPickerType.custom there is now also a ColorPickerType.customSecondary picker selector. It gets its values from ColorPicker.customSecondaryColorSwatchesAndNames.
  • Added support for transparent colors for both custom color palette pickers. They can now have opacity in the picker in their custom color values. This also works if the opacity and slider in ColorPicker.enableOpacity is not enabled. Nothing new is needed to use this feature. It works automatically when custom color palettes are used that have partially transparent colors in them.
  • Added shadowColor and surfaceTintColor to the dialog properties to enable control of the shadow color and surface tint color of the color picker dialog.
  • The color utilities ColorTools.createPrimarySwatch and ColorTools.createAccentSwatch now create color swatches with alpha channel value kept at its input values for all created swatch indexes. Previously they set alpha to #FF, even if the value might have been something else. Creating palettes with very low alpha in the source color will not produce pretty palettes, but it is now possible to create them.
  • The Color picker received two new layout properties. Previously all vertical spacings between the column elements in the picker were controlled by the ColorPicker property columnSpacing. For two key elements, you can now override this spacing.
    • Use toolbarSpacing to adjust the vertical spacing below the top toolbar header and its action buttons. The purpose is to enable using zero space or close to it, so the top toolbar and action buttons can be closer to the picker selection control than the rest of the spacing in the picker uses.
    • Use shadesSpacing to adjust the vertical spacing after the Material-2 swatch palette. By setting it to zero or one, you can create a design where the Material-2 swatch-based palette is closer to or connected to the Material-3 tonal palette. As long as the tonal palette does not use a heading, of course.
    • Both toolbarSpacing and shadesSpacing default to columnSpacing if they are not defined.
    • More of these vertical spacing fine-tuning properties can be added if there is a need for them.

CHANGE

  • Dialog OK and Cancel action buttons now use the .icon Material button variants, when icon usage is enabled. Previously they baked in the leading icon into the button child Widget. This version follows the Material design spec exactly. The visual change is minor, but it does look better now when icons are used.
  • Recent colors now also capture the opacity of a selected color as a different color, it does this also when you change opacity. Selecting a color with opacity in the recent colors list will set the picker's opacity to the opacity the color in the recent colors list has.

FIX

Package

  • Replaced APIs deprecated in Flutter 3.19.0. Replaced internally used deprecated APIs RawKeyboardListener, RawKeyEvent, RawKeyDownEvent, RawKeyEventDataMacOs, RawKeyEventDataIos with Shortcut APIs.
  • When using custom transitions the InheritedTheme.capture should use actionButtons.useRootNavigator value and not default it to true. Fixed.

Web demo

  • Reset to defaults did not reset settings for wheelSquarePadding and wheelSquareBorderRadius. Fixed.
flex_color_picker - Version 3.3.1

Published by rydmike 9 months ago

January 21, 2024

flex_color_picker - Version 3.3.0

Published by rydmike over 1 year ago

3.3.0

July 18, 2023

NEW

  • Use ColorPicker.tonalColorSameSize set to true, to make the Material-3 HCT tonal palette color indicators use the same size as the size defined for the other color indicators. Previously and by default, the tonal color indicators are smaller to make the palette width match the width of the Material-2 swatch color palette, that has fewer colors.

FIX

  • Fixed issue #67 Inner circle does not move.

    • When clicking on the color wheels square color box part inside the Hue circle, the click moved the selection on wheel when clicking close to the square edge. This is now fixed. The fix also introduces exact wheel tap/drag to start an operation of Hue wheel. Previously, the Hue wheel would start operating when taping or dragging on the square containing the Hue wheel, but outside the squared color area inside it. Now to start dragging or make a tap action, it must start on the Hue wheel. Dragging around outside it or inside it, once a drag operation has started, works as before.
  • Fixed issue #66 White color selects multiple colors.

    • Part of original design with the picker was to only have a given color value appear in one color palette. When adding custom color palettes or using tonal palettes, the same color values may appear in multiple palettes. Selecting such a color value would highlight all the palettes the color appears in. Tonal palettes always contain white and black colors, so it is particularly problematic when using them. This fix prevents showing the main color as selected in multiple palettes and avoids switching Material swatch palette when operating on a tonal palettes. As a part of this FIX, main Material swatch shade color index 500, or for Material accent swatch shade, color index 200, is only shown as selected when its color is actually selected in a Material swatch or Material tonal color tone.
flex_color_picker - Version 3.2.2

Published by rydmike over 1 year ago

3.2.2

May 11, 2023

  • Updated to use minimum flex_seed_scheme ^1.3.0. This version, no longer depends on material_color_utilities, thus avoiding all version issues and conflicts when Flutter changes what breaking version of material_color_utilities it uses on different channels and versions.
  • Tested package with Flutter 3.10 and rebuilt web demo example with the new Flutter release.
flex_color_picker - Version 3.2.1

Published by rydmike over 1 year ago

3.2.1

Apr 16, 2023

  • Changed to using flex_seed_scheme: ^1.2.4 that depends on material_color_utilities with version constraint set to >=0.2.0 <0.4.0 from ^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.
  • Updated default example to use Material 3.
flex_color_picker - Version 3.2.0

Published by rydmike over 1 year ago

Version 3.2.0

Apr 2, 2023

NEW

  • Based on user request, exposed widget ColorCodeField as a part of the package's public API. It can now be used externally as well. The ColorCodeField is the color code entry and display field used by the ColorPicker.
flex_color_picker - Version 3.1.0

Published by rydmike over 1 year ago

3.1.0

Feb 1, 2023

CHANGE

  • Requires minimum Flutter 3.7.0 and Dart 2.19.0 that is used by Flutter 3.17. Version 3.7.0 of Flutter broke the nullable Overlay.of API. The new API is Overlay.maybeOf. This forced a new release of FlexColorPicker that requires minimum Flutter 3.7 that breaks compatibility with older versions of Flutter.

FIX

  • Dart format and analyzer updates for Flutter 3.7.0.
  • Add example screenshots to pubspec.yaml.
flex_color_picker - Version 3.0.2

Published by rydmike almost 2 years ago

3.0.2

Jan 13, 2023

FIX

  • Fixed the color picker item size Slider in the Web demo app. No changes to the package.
flex_color_picker - Version 3.0.1

Published by rydmike almost 2 years ago

3.0.1

Jan 12, 2023

FIX

  • The onColorChanged was called twice if just clicking on the wheel color picker's wheel or square to set a new color value via a single click. This fixes it, and such clicks now only generate one onColorChanged call-back. Dragging on the wheel and square still generate onColorChanged call-backs during the entire drag process. To get callbacks just at start or end of drags, use onColorChangeStart and onColorChangeEnd as before.
flex_color_picker - Version 3.0.0

Published by rydmike almost 2 years ago

3.0.0

Nov 23, 2022

BREAKING - STYLE

  • The color picker dialog actionsPadding now default to null. This results in that if it is undefined, its value is determined by the ambient AlertDialogTheme, or if it is not defined either, the default for AlertDialog. Which have different defaults depending on if Material 2 or Material 3 is used. Default value in previous versions of FlexColorPicker was: EdgeInsets.symmetric(horizontal: 16)

  • The color picker dialog buttonPadding now default to null. This results in that if it is undefined, its value is determined by the ambient AlertDialogTheme, or if it is not defined either, the default for AlertDialog. Which have different defaults depending on if Material 2 or Material 3 is used. Default value in previous versions of FlexColorPicker was: EdgeInsets.all(16)

  • The API usage of the above properties is unchanged. It is only the default behavior that has been updated to be less opinionated and to enable using theme-dependent settings.

BREAKING - REMOVED

  • Removed in version 2.1.0 no longer used and already deprecated parameter useRootNavigator in ColorPicker method showPickerDialog.
  • Removed in version 2.1.0 no longer used and already deprecated parameter useRootNavigator in function showColorPickerDialog.

NEW

  • To ColorPicker method showPickerDialog and to function showColorPickerDialog, added parameters barrierLabel and anchorPoint as pass along values to Flutter SDK showDialog and showGeneralDialog.

  • To ColorPicker method showPickerDialog and to function showColorPickerDialog added parameters transitionBuilder and transitionDuration. If transitionBuilder is not null, the showPickerDialog and showColorPickerDialog will use the showGeneralDialog Flutter SDK function instead of showDialog. The showGeneralDialog function will be used with the provided transitionBuilder and transitionDuration. The transitionDuration only has any impact when the transitionBuilder is used. If transitionBuilder is null, then the showPickerDialog and showColorPickerDialog use the Flutter SDK showDialog implementation as before, thus using the default Material platform dependent showDialog transition and duration.

EXAMPLES

  • Default example: Added an example of how to use the transitionBuilder.
  • Web example: Modernized its theme by using Material 3 and a seed generated ColorScheme.
flex_color_picker - Version 2.6.1

Published by rydmike about 2 years ago

2.6.1

Sep 9, 2022

  • Add secondaryOffset to OpacitySliderTrack paint method override to fix new requirement for master channel compatibility, works with stable channel too. Thanks Dan Reynolds for the PR.
flex_color_picker - Version 2-6-0

Published by rydmike about 2 years ago

Aug 30, 2022

  • Contains all updates from 2.6.0-dev, dev2 and dev3.
  • Updated minimum dependencies to Dart >=2.18.0 and Flutter >= 3.3.0.

2.6.0-dev.3

August 28, 2022

CHANGE

  • This is a dev release that works with Flutter beta 3.3.0-0.5.pre and master channel.
    It has more relaxed constraints than 2.6.0-dev.2.

  • This version no longer depends directly on package material_color_utilities it uses
    flex_seed_scheme instead, with a transitive dependency on material_color_utilities.

  • Changed all used TextTheme style names to M3 versions, including docs.

2.6.0-dev.2

August 21, 2022

CHANGE

  • This is a dev release for those that need to work with both master channel where Flutter master
    SDK depends on material_color_utilities 0.2.0 and 3.3.0 beta, pre for upcoming Flutter 3.3.0
    stable, use material_color_utilities 0.1.5. It uses a controversial package constraint of:
    material_color_utilities: '>=0.1.5 <=0.2.0'. Using older version 0.1.3 and 0.1.4 in theory
    also works, but they contain some breaking color values in the used algorithm for calculation of
    tonal palettes. The color changes are very minor and typically not visible to the eye.

  • This dev release also disabled two trivial tests that contained incompatible results between
    Flutter 3.0.5 stable, 3.3.0-0.4.pre beta and 3.1.0-x master.

2.6.0-dev.1

August 5, 2022

CHANGE

  • This is a dev release for those that need to work with master channel where Flutter SDK depends on
    material_color_utilities ^0.2.0.

  • Updated material_color_utilities to ^0.2.0. This version constraint does not
    work with Flutter 3.0.x stable or beta 3.3.x, and their earlier versions.
    This dev release is required to use Flutter SDK master 3.1.0-0.0.pre.2111 or later,
    that uses material_color_utilities 0.2.0.

  • For other (older) version of Flutter SDK you can use package version 2.5.0 that has a
    material_color_utilities version constraint of ^0.1.3.

  • This release also updates Dart SDK constraint to '>=2.17.0 <3.0.0' and has Flutter listed as
    '>=3.1.0-0.0.pre.2111'.

DOCS

  • Harmonized the changelog style and its past history. The new style and how it looks will be tested
    with a dev release to ensure it works well on pub.
flex_color_picker - Version 2.6.0-dev.3

Published by rydmike about 2 years ago

2.6.0-dev.3

August 28, 2022

CHANGE

  • This is a dev release that works with Flutter beta 3.3.0-0.5.pre and master channel. It has more relaxed constraints than 2.6.0-dev.2.

  • This version no longer depends directly on package material_color_utilities it uses flex_seed_scheme instead, with a transitive dependency on material_color_utilities.

  • Changed all used TextTheme style names to M3 versions, including docs.

flex_color_picker - Version 2.6.0-dev.2

Published by rydmike about 2 years ago

2.6.0-dev.2

August 21, 2022

This is a dev release for those that need to work with both master channel where Flutter master SDK depends on material_color_utilities 0.2.0 and 3.3.0 beta, pre for upcoming Flutter 3.3.0 stable, use material_color_utilities 0.1.5. It uses a controversial package constraint of:
material_color_utilities: '>=0.1.5 <=0.2.0'. Using older version 0.1.3 and 0.1.4 in theory also works, but they contain some breaking color values in the used algorithm for calculation of tonal palettes. The color changes are very minor and typically not visible to the eye.

This dev release also disabled two trivial tests that contained incompatible results between Flutter 3.0.5 stable, 3.3.0-0.4.pre beta and 3.1.0-x master.

flex_color_picker - Version 2.6.0-dev.1

Published by rydmike about 2 years ago

2.6.0-dev.1

August 5, 2022

This is a dev release for those that need to work with master channel where Flutter SDK depends on material_color_utilities ^0.2.0.

  • Updated material_color_utilities to ^0.2.0. This version constraint does not work with Flutter 3.0.x stable or beta 3.3.x, and their earlier versions. This dev release is required to use Flutter SDK master 3.1.0-0.0.pre.2111 or later, that uses material_color_utilities 0.2.0.

  • For other (older) version of Flutter SDK you can use package version 2.5.0 that has a material_color_utilities version constraint of ^0.1.3.

  • This release also updates Dart SDK constraint to '>=2.17.0 <3.0.0' and has Flutter listed as '>=3.1.0-0.0.pre.2111'.

DOCS

  • Harmonized the changelog style and its past history. The new style and how it looks will be tested
    with a dev release to ensure it works well on pub.