lerp static method
Linearly interpolates between two theme variants.
Continuous values interpolate smoothly; discrete or optional values switch at the midpoint:
- settings delegates to GlassThemeSettings.lerp (per-field smooth
lerp with midpoint switching for one-sided
nulls). - glowColors delegates to GlassGlowColors.lerp.
- borderRadius interpolates when set on both sides, otherwise switches at the midpoint.
- quality is discrete and always switches at the midpoint.
Used to cross-fade between the light and dark variants when a
content-aware brightness flip animates (see GlassContentAwareScope).
Implementation
static GlassThemeVariant lerp(
GlassThemeVariant a,
GlassThemeVariant b,
double t,
) {
if (identical(a, b)) return a;
final double? radius;
if (a.borderRadius != null && b.borderRadius != null) {
radius = lerpDouble(a.borderRadius, b.borderRadius, t);
} else {
radius = t < 0.5 ? a.borderRadius : b.borderRadius;
}
return GlassThemeVariant(
settings: GlassThemeSettings.lerp(a.settings, b.settings, t),
quality: t < 0.5 ? a.quality : b.quality,
glowColors: GlassGlowColors.lerp(a.glowColors, b.glowColors, t),
borderRadius: radius,
);
}