apply method
- ZetaContrast contrast = ZetaContrast.aa,
- Brightness brightness = Brightness.light,
Creates a copy of the current ZetaColorSwatch with potential modifications
based on the provided contrast
and brightness
.
The contrast
determines which shade of the color should be used
as the primary color in the copied swatch.
contrast
: The shade to use as the primary color in the new swatch. Defaults to ZetaContrast.aa.brightness
: The brightness value for the new swatch. Defaults to Brightness.light.
Implementation
ZetaColorSwatch apply({
ZetaContrast contrast = ZetaContrast.aa,
Brightness brightness = Brightness.light,
}) {
if (this.contrast == contrast && this.brightness == brightness) return this;
// Generate a list of indices based on brightness level
final indices = List.generate(10, (index) => (index + 1) * 10);
// Create a new map (swatch) based on the indices and current swatch values
final swatch = Map<int, Color>.fromEntries(indices.map((i) => MapEntry(i, super[i] ?? this)));
// Determine the primaryIndex color of the new swatch based on the accessibility level
final primaryIndex = brightness == Brightness.light ? contrast.primary : 110 - contrast.primary;
// Return a new ZetaColorSwatch object with the new primaryIndex color and swatch
return ZetaColorSwatch(
contrast: contrast,
brightness: brightness,
primary: swatch[primaryIndex]!.value,
swatch: swatch,
);
}