lerp static method
- ButtonStyle? a,
- ButtonStyle? b,
- 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,
);
}