Implementation
@override
DynamicColor get secondary {
final color2025 = DynamicColor(
name: "secondary",
palette: (scheme) => scheme.secondaryPalette,
tone: (scheme) {
if (scheme.platform == .watch) {
return scheme.variant == .neutral
? 90.0
: _tMaxC(scheme.secondaryPalette, 0, 90);
} else if (scheme.variant == .neutral) {
return scheme.isDark
? _tMinC(scheme.secondaryPalette, 0, 98)
: _tMaxC(scheme.secondaryPalette);
} else if (scheme.variant == .vibrant) {
return _tMaxC(scheme.secondaryPalette, 0, scheme.isDark ? 90 : 98);
} else {
// EXPRESSIVE and TONAL_SPOT
return scheme.isDark ? 80.0 : _tMaxC(scheme.secondaryPalette);
}
},
isBackground: true,
background: (scheme) {
if (scheme.platform == .phone) {
return scheme.isDark ? surfaceBright : surfaceDim;
} else {
return surfaceContainerHigh;
}
},
contrastCurve: (scheme) => scheme.platform == .phone
? _getContrastCurve(4.5)
: _getContrastCurve(7),
toneDeltaPair: (scheme) => scheme.platform == .phone
? ToneDeltaPair(
roleA: secondaryContainer,
roleB: secondary,
delta: 5.0,
polarity: .relativeLighter,
constraint: .farther,
)
: null,
);
return super.secondary.extendSpecVersion(.spec2025, color2025);
}