sortBy method
Sorts the palette by property
.
property
must not be null
.
Implementation
void sortBy(ColorSortingProperty property) {
if (colors.length <= 1) return;
if (property == ColorSortingProperty.similarity ||
property == ColorSortingProperty.difference) {
_sortByDifference(property);
return;
}
colors.sort((a, b) {
late num value1;
late num value2;
var inverse = false;
switch (property) {
case ColorSortingProperty.brightest:
value1 = a.toHspColor().perceivedBrightness;
value2 = b.toHspColor().perceivedBrightness;
inverse = true;
break;
case ColorSortingProperty.dimmest:
value1 = a.toHspColor().perceivedBrightness;
value2 = b.toHspColor().perceivedBrightness;
break;
case ColorSortingProperty.lightest:
value1 = a.toHslColor().lightness;
value2 = b.toHslColor().lightness;
inverse = true;
break;
case ColorSortingProperty.darkest:
value1 = a.toHslColor().lightness;
value2 = b.toHslColor().lightness;
break;
case ColorSortingProperty.mostIntense:
value1 = a.toHsiColor().intensity;
value2 = b.toHsiColor().intensity;
inverse = true;
break;
case ColorSortingProperty.leastIntense:
value1 = a.toHsiColor().intensity;
value2 = b.toHsiColor().intensity;
break;
case ColorSortingProperty.deepest:
value1 = a.saturation;
value2 = b.saturation;
inverse = true;
break;
case ColorSortingProperty.dullest:
value1 = a.saturation;
value2 = b.saturation;
break;
case ColorSortingProperty.richest:
var color1 = a.toHsbColor();
var color2 = b.toHsbColor();
value1 = color1.saturation + color1.brightness;
value2 = color2.saturation + color2.brightness;
inverse = true;
break;
case ColorSortingProperty.muted:
var color1 = a.toHsbColor();
var color2 = b.toHsbColor();
value1 = color1.saturation + color1.brightness;
value2 = color2.saturation + color2.brightness;
break;
case ColorSortingProperty.red:
value1 = a.hue.calculateDistance(0);
value2 = b.hue.calculateDistance(0);
break;
case ColorSortingProperty.redOrange:
value1 = a.hue.calculateDistance(30);
value2 = b.hue.calculateDistance(30);
break;
case ColorSortingProperty.orange:
value1 = a.hue.calculateDistance(60);
value2 = b.hue.calculateDistance(60);
break;
case ColorSortingProperty.yellowOrange:
value1 = a.hue.calculateDistance(90);
value2 = b.hue.calculateDistance(90);
break;
case ColorSortingProperty.yellow:
value1 = a.hue.calculateDistance(120);
value2 = b.hue.calculateDistance(120);
break;
case ColorSortingProperty.yellowGreen:
value1 = a.hue.calculateDistance(150);
value2 = b.hue.calculateDistance(150);
break;
case ColorSortingProperty.green:
value1 = a.hue.calculateDistance(180);
value2 = b.hue.calculateDistance(180);
break;
case ColorSortingProperty.cyan:
value1 = a.hue.calculateDistance(210);
value2 = b.hue.calculateDistance(210);
break;
case ColorSortingProperty.blue:
value1 = a.hue.calculateDistance(240);
value2 = b.hue.calculateDistance(240);
break;
case ColorSortingProperty.blueViolet:
value1 = a.hue.calculateDistance(270);
value2 = b.hue.calculateDistance(270);
break;
case ColorSortingProperty.violet:
value1 = a.hue.calculateDistance(300);
value2 = b.hue.calculateDistance(300);
break;
case ColorSortingProperty.magenta:
value1 = a.hue.calculateDistance(330);
value2 = b.hue.calculateDistance(330);
break;
default:
break;
}
return inverse ? value2.compareTo(value1) : value1.compareTo(value2);
});
}