effective static method
Make effective FlexSchemeColor colors using 1 to 4 of the passed in
colors
based on the usedColors
property.
The usedColors
value corresponds to:
- 1: Use only primary color in
colors
, and compute primaryVariant, secondary and secondaryVariant for returned FlexSchemeColor. - 2: Use primary and secondary in
colors
and compute primaryVariant and secondaryVariant for returned FlexSchemeColor. - 3: Use primary, secondary and primaryVariant in
colors
and compute and secondaryVariant for returned FlexSchemeColor. - 4: Use all 4
colors
in passed in FlexColorsScheme as they are.
If swapColors
is true, primary and secondary, as well as
primaryVariant and secondaryVariant are swapped, before being
usage limited by usedColors
.
Implementation
static FlexSchemeColor effective(
final FlexSchemeColor colors, final int usedColors,
{final bool swapColors = false}) {
assert(usedColors >= 1 && usedColors <= 4, 'usedColors must be 1 to 4.');
final FlexSchemeColor effectiveColors = swapColors
? colors.copyWith(
primary: colors.secondary,
primaryVariant: colors.secondaryVariant,
secondary: colors.primary,
secondaryVariant: colors.primaryVariant,
)
: colors;
return effectiveColors.copyWith(
primary: effectiveColors.primary,
primaryVariant: usedColors > 2
? effectiveColors.primaryVariant
: effectiveColors.primary.darken(kDarkenPrimaryVariant),
secondary: usedColors > 1
? effectiveColors.secondary
: effectiveColors.primary.darken(kDarkenSecondary),
secondaryVariant: usedColors > 3
? effectiveColors.secondaryVariant
: usedColors > 1
? effectiveColors.secondary
.darken(kDarkenSecondaryVariantFromSecondary)
: effectiveColors.primary.darken(kDarkenSecondaryVariant),
appBarColor: colors.appBarColor,
error: colors.error,
);
}