primaryContainer property
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);
}