generateSwatch method
Generates a color swatch for this color. A color swatch is a map with integer keys indexing to Color objects, typically used for design themes.
The function has optional parameters:
primary
(Default = kZetaSwatchPrimaryIndex) - The primary color index for the swatch. This number should be a key in the swatch map.targetContrasts
(Default = kZetaSwatchTargetContrasts) - Map of target contrast values for each color index.background
(Default = ZetaColorBase.white) - The color used to determine the contrast of the colors in the swatch. Generally, this should be the background color that the color swatch will be displayed on.adjustPrimary
(Default = true) - Determines whether to adjust the contrast of the primary color on the background color. Useful in cases the brand color is being used.
Returns a Map<int, Color> object.
Implementation
Map<int, Color> generateSwatch({
int primary = kZetaSwatchPrimaryIndex,
Map<int, double> targetContrasts = kZetaSwatchTargetContrasts,
Color background = ZetaColorBase.white,
bool adjustPrimary = true,
}) {
assert(
targetContrasts.containsKey(primary),
'Primary key not found in targetContrasts.',
);
assert(
targetContrasts.values.every((v) => v > 0),
'All values in targetContrasts should be positive and non-null.',
);
final swatch = <int, Color>{};
final adjustedPrimary = adjustPrimary
? adjustContrast(
on: background,
target: targetContrasts[primary]!,
)
: this;
swatch[primary] = adjustedPrimary;
for (final shade in targetContrasts.keys) {
if (shade != primary) {
swatch[shade] = adjustedPrimary.adjustContrast(
on: background,
target: targetContrasts[shade]!,
);
}
}
return swatch;
}