eo_color 0.0.8 eo_color: ^0.0.8 copied to clipboard
An elegant, object-oriented implementation of the Material Design color palettes and swatches; an alternative to the Flutter's built-in colors.
EO-Color is an Elegant and Object-oriented implementation of the Material Design color palettes. It is intended to be used as:
- an alternative to the Flutter's built-in colors
- a base framework for more specific color packages
A key benefit of EO-Color is to improve the source code readability and
maintainability by providing a declarative interface. For example, to get a
light shade of grey, you just have to declare Grey.light()
.
Getting Started #
Like any object-oriented package, this one utilizes interfaces to define
concepts such as color palettes and swatches. Therefore, it is no surprise that
the two core interfaces are Palette
and Swatch
.
Palette interface #
It represents color palettes from which a color can be picked. Very often,
classes provide named constructors in which the desired color is selected to be
retrieved afterwards - via the color
property.
Material Design palette classes
These are classes whose name is the color they represent, such as "Grey". For
example: Grey()
represents the primary grey color, equivalent to the Flutter's
cryptic Colors.grey.shade500
; Grey.light()
≡ Colors.grey.shade200
;
Grey.veryDark()
≡ Colors.grey.shade900
; and so on.
Palettes in action
import 'package:eo_color/palettes.dart';
import 'package:flutter/material.dart';
class Greyish extends StatelessWidget {
static const _light = Grey.light();
@override
Widget build(BuildContext context) {
return Container(
color: _light.color,
);
}
}
Indexes by named constructors
Index | Normal | Accent |
---|---|---|
50 | ultraLight | |
100 | veryLight | light |
200 | light | () |
300 | lighter | |
400 | bitLighter | darker |
500 | () | |
600 | bitDarker | |
700 | darker | dark |
800 | dark | |
900 | veryDark |
Supported palette colors
Swatch interface #
A color swatch is a collection of related colors such as the colors of the
rainbow, shades of grey, etc. Its single property colors
retrieves several
colors at once as an Iterable<Color>
. For instance, Greys().colors
retrieves
ten shades of grey, as defined by the Material Design standard.
Color Swatch Classes
These are classes whose name is the plural of a color, such as "Greys". For
example: Greys().colors
retrieves an Iterable<Color>
containing ten shades
of grey; the greater the index, the darker the color.
Swatch in action
import 'package:eo_color/swatches.dart';
import 'package:flutter/material.dart';
/// Rectangle filled with a gradient of ten shades of a Material Design color.
class RectGradient extends StatelessWidget {
/// Rectangle filled with the given color swatch.
const RectGradient(Swatch swatch, {Key? key})
: _swatch = swatch,
super(key: key);
/// Rectangle filled with ten shades of grey.
const RectGradient.grey({Key? key}) : this(const Greys(), key: key);
// Material Design color swatch.
final Swatch _swatch;
@override
Widget build(BuildContext context) {
return Container(
height: kToolbarHeight / 2,
decoration: BoxDecoration(
gradient: LinearGradient(
end: Alignment.bottomLeft,
begin: Alignment.topRight,
colors: _swatch.colors.toList(growable: false),
),
),
);
}
}
Supported color swatches
Showcase application #
To run the showcase application:
cd example/
flutter run -d chrome
This should start the color palettes showcase in Chrome.