Implementation
static SfChatThemeData? lerp(
SfChatThemeData? a, SfChatThemeData? b, double t) {
if (a == null && b == null) {
return null;
}
return SfChatThemeData(
actionButtonForegroundColor: Color.lerp(
a!.actionButtonForegroundColor, b!.actionButtonForegroundColor, t),
actionButtonBackgroundColor: Color.lerp(
a.actionButtonBackgroundColor, b.actionButtonBackgroundColor, t),
actionButtonFocusColor:
Color.lerp(a.actionButtonFocusColor, b.actionButtonFocusColor, t),
actionButtonHoverColor:
Color.lerp(a.actionButtonHoverColor, b.actionButtonHoverColor, t),
actionButtonSplashColor:
Color.lerp(a.actionButtonSplashColor, b.actionButtonSplashColor, t),
actionButtonDisabledForegroundColor: Color.lerp(
a.actionButtonDisabledForegroundColor,
b.actionButtonDisabledForegroundColor,
t),
actionButtonDisabledBackgroundColor: Color.lerp(
a.actionButtonDisabledBackgroundColor,
b.actionButtonDisabledBackgroundColor,
t),
actionButtonElevation:
lerpDouble(a.actionButtonElevation, b.actionButtonElevation, t) ??
0.0,
actionButtonFocusElevation: lerpDouble(
a.actionButtonFocusElevation, b.actionButtonFocusElevation, t) ??
0.0,
actionButtonHoverElevation: lerpDouble(
a.actionButtonHoverElevation, b.actionButtonHoverElevation, t) ??
0.0,
actionButtonDisabledElevation: lerpDouble(a.actionButtonDisabledElevation,
b.actionButtonDisabledElevation, t) ??
0.0,
actionButtonHighlightElevation: lerpDouble(
a.actionButtonHighlightElevation,
b.actionButtonHighlightElevation,
t) ??
0.0,
actionButtonShape:
ShapeBorder.lerp(a.actionButtonShape, b.actionButtonShape, t),
actionButtonMouseCursor:
t < 0.5 ? a.actionButtonMouseCursor : b.actionButtonMouseCursor,
outgoingAvatarBackgroundColor: Color.lerp(
a.outgoingAvatarBackgroundColor, b.outgoingAvatarBackgroundColor, t),
incomingAvatarBackgroundColor: Color.lerp(
a.incomingAvatarBackgroundColor, b.incomingAvatarBackgroundColor, t),
outgoingBubbleContentBackgroundColor: Color.lerp(
a.outgoingBubbleContentBackgroundColor,
b.outgoingBubbleContentBackgroundColor,
t),
incomingBubbleContentBackgroundColor: Color.lerp(
a.incomingBubbleContentBackgroundColor,
b.incomingBubbleContentBackgroundColor,
t),
editorTextStyle: TextStyle.lerp(a.editorTextStyle, b.editorTextStyle, t),
outgoingContentTextStyle: TextStyle.lerp(
a.outgoingContentTextStyle, b.outgoingContentTextStyle, t),
incomingContentTextStyle: TextStyle.lerp(
a.incomingContentTextStyle, b.incomingContentTextStyle, t),
outgoingPrimaryHeaderTextStyle: TextStyle.lerp(
a.outgoingPrimaryHeaderTextStyle,
b.outgoingPrimaryHeaderTextStyle,
t),
incomingPrimaryHeaderTextStyle: TextStyle.lerp(
a.incomingPrimaryHeaderTextStyle,
b.incomingPrimaryHeaderTextStyle,
t),
outgoingSecondaryHeaderTextStyle: TextStyle.lerp(
a.outgoingSecondaryHeaderTextStyle,
b.outgoingSecondaryHeaderTextStyle,
t),
incomingSecondaryHeaderTextStyle: TextStyle.lerp(
a.incomingSecondaryHeaderTextStyle,
b.incomingSecondaryHeaderTextStyle,
t),
suggestionItemTextStyle: WidgetStateProperty.lerp<TextStyle?>(
a.suggestionItemTextStyle,
b.suggestionItemTextStyle,
t,
TextStyle.lerp,
),
outgoingBubbleContentShape: ShapeBorder.lerp(
a.outgoingBubbleContentShape, b.outgoingBubbleContentShape, t),
incomingBubbleContentShape: ShapeBorder.lerp(
a.incomingBubbleContentShape, b.incomingBubbleContentShape, t),
suggestionBackgroundColor: Color.lerp(
a.suggestionBackgroundColor, b.suggestionBackgroundColor, t),
suggestionBackgroundShape: ShapeBorder.lerp(
a.suggestionBackgroundShape, b.suggestionBackgroundShape, t),
suggestionItemBackgroundColor: WidgetStateProperty.lerp<Color?>(
a.suggestionItemBackgroundColor,
b.suggestionItemBackgroundColor,
t,
Color.lerp,
),
suggestionItemShape: WidgetStateProperty.lerp<ShapeBorder?>(
a.suggestionItemShape,
b.suggestionItemShape,
t,
ShapeBorder.lerp,
),
);
}