Implementation
@override
DynamicColor get onSurface {
final color2025 = DynamicColor(
name: "on_surface",
palette: (scheme) => scheme.neutralPalette,
tone: (scheme) {
if (scheme.variant == .vibrant) {
return _tMaxC(scheme.neutralPalette, 0, 100, 1.1);
} else {
return DynamicColor.getInitialToneFromBackground((scheme) {
if (scheme.platform == .phone) {
return scheme.isDark ? surfaceBright : surfaceDim;
} else {
return surfaceContainerHigh;
}
})(scheme);
}
},
chromaMultiplier: (scheme) {
if (scheme.platform == .phone) {
if (scheme.variant == .neutral) {
return 2.2;
} else if (scheme.variant == .tonalSpot) {
return 1.7;
} else if (scheme.variant == .expressive) {
return Hct.isYellow(scheme.neutralPalette.hue)
? (scheme.isDark ? 3.0 : 2.3)
: 1.6;
}
}
return 1.0;
},
background: (scheme) {
if (scheme.platform == .phone) {
return scheme.isDark ? surfaceBright : surfaceDim;
} else {
return surfaceContainerHigh;
}
},
contrastCurve: (scheme) => scheme.isDark && scheme.platform == .phone
? _getContrastCurve(11)
: _getContrastCurve(9),
);
return super.onSurface.extendSpecVersion(.spec2025, color2025);
}