primaryContainer property

  1. @override
DynamicColor get primaryContainer
override

Implementation

@override
DynamicColor get primaryContainer {
  final color2025 = DynamicColor(
    name: "primary_container",
    palette: (scheme) => scheme.primaryPalette,
    tone: (scheme) {
      if (scheme.platform == .watch) {
        return 30.0;
      } else if (scheme.variant == .neutral) {
        return scheme.isDark ? 30.0 : 90.0;
      } else if (scheme.variant == .tonalSpot) {
        return scheme.isDark
            ? _tMinC(scheme.primaryPalette, 35, 93)
            : _tMaxC(scheme.primaryPalette, 0, 90);
      } else if (scheme.variant == .expressive) {
        return scheme.isDark
            ? _tMaxC(scheme.primaryPalette, 30, 93)
            : _tMaxC(
                scheme.primaryPalette,
                78,
                Hct.isCyan(scheme.primaryPalette.hue) ? 88 : 90,
              );
      } else {
        // VIBRANT
        return scheme.isDark
            ? _tMinC(scheme.primaryPalette, 66, 93)
            : _tMaxC(
                scheme.primaryPalette,
                66,
                Hct.isCyan(scheme.primaryPalette.hue) ? 88 : 93,
              );
      }
    },
    isBackground: true,
    background: (scheme) {
      if (scheme.platform == .phone) {
        return scheme.isDark ? surfaceBright : surfaceDim;
      } else {
        return null;
      }
    },
    toneDeltaPair: (scheme) => scheme.platform == .watch
        ? ToneDeltaPair(
            roleA: primaryContainer,
            roleB: primaryDim,
            delta: 10.0,
            polarity: .darker,
            constraint: .farther,
          )
        : null,
    contrastCurve: (scheme) =>
        scheme.platform == .phone && scheme.contrastLevel > 0
        ? _getContrastCurve(1.5)
        : null,
  );
  return super.primaryContainer.extendSpecVersion(.spec2025, color2025);
}