getNeutralVariantPalette method

  1. @override
TonalPalette getNeutralVariantPalette(
  1. TonalPaletteSourceColor sourceColor,
  2. Variant variant,
  3. bool isDark,
  4. double contrastLevel,
  5. Platform platform,
  6. SpecVersion specVersion,
)
override

Implementation

@override
TonalPalette getNeutralVariantPalette(
  TonalPaletteSourceColor sourceColor,
  Variant variant,
  bool isDark,
  double contrastLevel,
  Platform platform,
  SpecVersion specVersion,
) {
  switch (variant) {
    case .neutral:
      return .fromHueAndChroma(
        sourceColor.asHct.hue,
        (platform == .phone ? 1.4 : 6.0) * 2.2,
      );
    case .tonalSpot:
      return .fromHueAndChroma(
        sourceColor.asHct.hue,
        (platform == .phone ? 5.0 : 10.0) * 1.7,
      );
    case .expressive:
      final expressiveNeutralHue = _getExpressiveNeutralHue(
        sourceColor.asHct,
      );
      final expressiveNeutralChroma = _getExpressiveNeutralChroma(
        sourceColor.asHct,
        isDark,
        platform,
      );
      return .fromHueAndChroma(
        expressiveNeutralHue,
        expressiveNeutralChroma *
            (expressiveNeutralHue >= 105.0 && expressiveNeutralHue < 125.0
                ? 1.6
                : 2.3),
      );
    case .vibrant:
      final vibrantNeutralHue = _getVibrantNeutralHue(sourceColor.asHct);
      final vibrantNeutralChroma = _getVibrantNeutralChroma(
        sourceColor.asHct,
        platform,
      );
      return .fromHueAndChroma(
        vibrantNeutralHue,
        vibrantNeutralChroma * 1.29,
      );
    default:
      return super.getNeutralVariantPalette(
        sourceColor,
        variant,
        isDark,
        contrastLevel,
        platform,
        specVersion,
      );
  }
}