A simple Dart package exposing a Color class which can be used to create, convert, and compare colors.
dependencies: color: any
$ pub get
color.dartfile in your app
Color objects can be constructed using any of a few available constructors.
To create a color from rgb values, call
Color rgbColor = new Color.rgb(192, 255, 238); RgbColor rgbColor = new RgbColor(192, 255, 238);
Alternatively, a color can be created directly in a number of other color spaces.
RgbColor rgb = new RgbColor(192, 255, 238); HexColor hex = new HexColor('c0ffee'); HslColor hsl = new HslColor(163.8, 100, 87.6); XyzColor xyz = new XyzColor(72.931, 88.9, 94.204); CielabColor cielab = new CielabColor(95.538, -23.02, 1.732);
Colors are immutable, and can be created using const constructors.
RgbColor rgb = const RgbColor(192, 255, 238);
Colors can be created directly from CSS3 color names.
RgbColor black = new RgbColor.name('black'); //factory constructor that returns a const RgbColor RgbColor white = RgbColor.namedColors['black']; //directly reference the const RgbColor without the factory
Colors implementing the CssColorSpace interface can output a css string representation.
RgbColor rgb = new RgbColor(192, 255, 238); HexColor hex = new HexColor('c0ffee'); HslColor hsl = new HslColor(163.8, 100, 87.6); assert(rgb is CssColorSpace, true); assert(hex is CssColorSpace, true); assert(hsl is CssColorSpace, true); print(rgb.toCssString()); //rgb(192, 255, 238) print(hex.toCssString()); //#c0ffee print(hsl.toCssString()); //hsl(163.8, 100.0%, 87.6%)
Colors can be compared using the
== operator, which will evaluate to true if the two colors share identical rgb values after being rounded to integers.
assert(new Color.hex('c0ffee') == new Color.hex('c0ffee')); assert(new Color.rgb('192, 255, 238') == new Color.hex('c0ffee'));
Colors can be converted from one color space to another by calling the appropriate
toXXXColor method on them.
HslColor hsl = new RgbColor(192, 255, 238).toHslColor();
Colors can be altered using a ColorFilter, which will return a new color in the same color space as the input color with that filter applied to it.
RgbColor grey = ColorFilter.greyscale(new RgbColor(192, 255, 238)); HslColor sepia = ColorFilter.sepia(new HslColor(163.8, 100, 87.6));
0.1.0 ----- * Creation of the Color class supporting rgb colors. 0.2.0 ----- * Added hex support and conversion functions. 0.3.0 ----- * Added hsl support and conversion functions. 0.3.1 ----- * Resolved bug where Color.toHexString() was not prepending each byte with 0s as appropriate. * Added Color.toRgbString() as an alias for Color.toSting(). 1.0.0 ----- * Major refactor which will break code using earlier versions. * Refactored to pull each color space into its own subclass extending a base Color class. 1.1.0 ----- * Added XYZ color space support with bidirectional conversions between XYZ and RGB color spaces. 1.2.0 ----- * Added CIELAB color space support with bidirectional conversions with the XYZ color space (and the RGB color space using XYZ as an intermediary). 1.3.0 ----- * Added toXXXColor() conversion methods for all possible color space transitions. * Added Color.clone() method to make a copy of a Color object. * Added toCssString() method to RGB, Hex, and HSL colors for easier use with CSS. * Added ColorFilters to alter colors according to various filtering rules. * Added a demo page to test the package and see the effect of filters. 2.0.0 ----- * Color and all subclasses now implement a const constructor. * Colors are no longer mutable, and all conversion and filter methods return new Color objects. * Removed the Color.clone() method (this was only generally useful when Colors were mutable). * Adjusted the greyscale and invert ColorFilters to use the CIELAB color space, giving better results. * Added a lighten and darken ColorFilter. * Added an RgbColor.name() constructor to create colors by CSS3 name. * Added a Color.toHexColor() method for easier conversion to the HexColor class. * Added a CssColorSpace interface for the color spaces which have representation in the CSS standard (RGB, HEX, and HSL). 2.0.1 ----- * Removed a switch statement that was preventing dart2js compilation.
Add this to your package's pubspec.yaml file:
dependencies: color: "^2.0.2"
You can install packages from the command line:
$ pub get
$ flutter packages get
Alternatively, your editor might support
pub get or
flutter packages get.
Check the docs for your editor to learn more.
Now in your Dart code, you can use:
|2.0.2||Jul 3, 2017|
|2.0.1||Mar 14, 2017|
|2.0.0||Jun 24, 2015|
|1.3.0||Apr 3, 2015|
|1.2.0||Jan 21, 2015|
|0.3.1||May 27, 2014|
|0.3.0||Jan 30, 2014|
|0.2.0||Jan 27, 2014|
|0.1.0||Jan 26, 2014|
We analyzed this package on May 22, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Detected platforms: Flutter, web, other
No platform restriction found in primary library
Maintain an example.
Create a short demo in the
example/directory to show how to use this package. Common file name patterns include:
example.dartor you could also use
Fix analysis and formatting issues.
Analysis or formatting checks reported 5 hints.
Similar analysis of the following files failed: