lerp static method

ButtonStyle? lerp(
  1. ButtonStyle? a,
  2. ButtonStyle? b,
  3. double t
)

Linearly interpolate between two ButtonStyles.

Implementation

static ButtonStyle? lerp(ButtonStyle? a, ButtonStyle? b, double t) {
  if (identical(a, b)) {
    return a;
  }
  return ButtonStyle(
    textStyle: MaterialStateProperty.lerp<TextStyle?>(
      a?.textStyle,
      b?.textStyle,
      t,
      TextStyle.lerp,
    ),
    backgroundColor: MaterialStateProperty.lerp<Color?>(
      a?.backgroundColor,
      b?.backgroundColor,
      t,
      Color.lerp,
    ),
    foregroundColor: MaterialStateProperty.lerp<Color?>(
      a?.foregroundColor,
      b?.foregroundColor,
      t,
      Color.lerp,
    ),
    overlayColor: MaterialStateProperty.lerp<Color?>(
      a?.overlayColor,
      b?.overlayColor,
      t,
      Color.lerp,
    ),
    shadowColor: MaterialStateProperty.lerp<Color?>(
      a?.shadowColor,
      b?.shadowColor,
      t,
      Color.lerp,
    ),
    surfaceTintColor: MaterialStateProperty.lerp<Color?>(
      a?.surfaceTintColor,
      b?.surfaceTintColor,
      t,
      Color.lerp,
    ),
    elevation: MaterialStateProperty.lerp<double?>(a?.elevation, b?.elevation, t, lerpDouble),
    padding: MaterialStateProperty.lerp<EdgeInsetsGeometry?>(
      a?.padding,
      b?.padding,
      t,
      EdgeInsetsGeometry.lerp,
    ),
    minimumSize: MaterialStateProperty.lerp<Size?>(a?.minimumSize, b?.minimumSize, t, Size.lerp),
    fixedSize: MaterialStateProperty.lerp<Size?>(a?.fixedSize, b?.fixedSize, t, Size.lerp),
    maximumSize: MaterialStateProperty.lerp<Size?>(a?.maximumSize, b?.maximumSize, t, Size.lerp),
    iconColor: MaterialStateProperty.lerp<Color?>(a?.iconColor, b?.iconColor, t, Color.lerp),
    iconSize: MaterialStateProperty.lerp<double?>(a?.iconSize, b?.iconSize, t, lerpDouble),
    iconAlignment: t < 0.5 ? a?.iconAlignment : b?.iconAlignment,
    side: _lerpSides(a?.side, b?.side, t),
    shape: MaterialStateProperty.lerp<OutlinedBorder?>(
      a?.shape,
      b?.shape,
      t,
      OutlinedBorder.lerp,
    ),
    mouseCursor: t < 0.5 ? a?.mouseCursor : b?.mouseCursor,
    visualDensity: t < 0.5 ? a?.visualDensity : b?.visualDensity,
    tapTargetSize: t < 0.5 ? a?.tapTargetSize : b?.tapTargetSize,
    animationDuration: t < 0.5 ? a?.animationDuration : b?.animationDuration,
    enableFeedback: t < 0.5 ? a?.enableFeedback : b?.enableFeedback,
    alignment: AlignmentGeometry.lerp(a?.alignment, b?.alignment, t),
    splashFactory: t < 0.5 ? a?.splashFactory : b?.splashFactory,
    backgroundBuilder: t < 0.5 ? a?.backgroundBuilder : b?.backgroundBuilder,
    foregroundBuilder: t < 0.5 ? a?.foregroundBuilder : b?.foregroundBuilder,
  );
}