lerp static method

Linearly interpolates between two theme variants.

Continuous values interpolate smoothly; discrete or optional values switch 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,
  );
}