effective static method

FlexSchemeColor effective(
  1. FlexSchemeColor colors,
  2. int usedColors, {
  3. bool swapColors = false,
})

Make effective FlexSchemeColor colors using 1...4 of the passed in colors based on the usedColors property.

The usedColors value corresponds to:

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(FlexSchemeColor colors, int usedColors,
    {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
        // ignore: avoid_redundant_argument_values
        : effectiveColors.primary.darken(kDarkenPrimaryVariant),
    secondary: usedColors > 1
        ? effectiveColors.secondary
        : effectiveColors.primary.darken(kDarkenSecondary),
    secondaryVariant: usedColors > 3
        ? effectiveColors.secondaryVariant
        : usedColors > 1
            // ignore: avoid_redundant_argument_values
            ? effectiveColors.secondary
                .darken(kDarkenSecondaryVariantFromSecondary)
            : effectiveColors.primary.darken(kDarkenSecondaryVariant),
    appBarColor: colors.appBarColor,
    error: colors.error,
  );
}