add more logic to copywith methods
This commit is contained in:
@@ -42,7 +42,7 @@ class StreamChatThemeData {
|
|||||||
factory StreamChatThemeData.fromTheme(ThemeData theme) {
|
factory StreamChatThemeData.fromTheme(ThemeData theme) {
|
||||||
final defaultTheme = getDefaultTheme(theme);
|
final defaultTheme = getDefaultTheme(theme);
|
||||||
|
|
||||||
return StreamChatThemeData(
|
return defaultTheme.copyWith(
|
||||||
accentColor: theme.accentColor,
|
accentColor: theme.accentColor,
|
||||||
primaryColor: theme.colorScheme.primary,
|
primaryColor: theme.colorScheme.primary,
|
||||||
secondaryColor: theme.colorScheme.secondary,
|
secondaryColor: theme.colorScheme.secondary,
|
||||||
@@ -72,9 +72,52 @@ class StreamChatThemeData {
|
|||||||
primaryColor: primaryColor ?? this.primaryColor,
|
primaryColor: primaryColor ?? this.primaryColor,
|
||||||
secondaryColor: secondaryColor ?? this.secondaryColor,
|
secondaryColor: secondaryColor ?? this.secondaryColor,
|
||||||
accentColor: accentColor ?? this.accentColor,
|
accentColor: accentColor ?? this.accentColor,
|
||||||
channelPreviewTheme: channelPreviewTheme ?? this.channelPreviewTheme,
|
channelPreviewTheme: channelPreviewTheme?.copyWith(
|
||||||
channelTheme: channelTheme ?? this.channelTheme,
|
title:
|
||||||
messageTheme: messageTheme ?? this.messageTheme,
|
channelPreviewTheme.title ?? this.channelPreviewTheme.title,
|
||||||
|
subtitle: channelPreviewTheme.subtitle ??
|
||||||
|
this.channelPreviewTheme.subtitle,
|
||||||
|
lastMessageAt: channelPreviewTheme.lastMessageAt ??
|
||||||
|
this.channelPreviewTheme.lastMessageAt,
|
||||||
|
avatarTheme: channelPreviewTheme.avatarTheme ??
|
||||||
|
this.channelPreviewTheme.avatarTheme,
|
||||||
|
) ??
|
||||||
|
this.channelPreviewTheme,
|
||||||
|
channelTheme: channelTheme?.copyWith(
|
||||||
|
channelHeaderTheme: channelTheme.channelHeaderTheme ??
|
||||||
|
this.channelTheme.channelHeaderTheme,
|
||||||
|
messageInputButtonIconTheme:
|
||||||
|
channelTheme.messageInputButtonIconTheme ??
|
||||||
|
this.channelTheme.messageInputButtonIconTheme,
|
||||||
|
messageInputButtonTheme: channelTheme.messageInputButtonTheme ??
|
||||||
|
this.channelTheme.messageInputButtonTheme,
|
||||||
|
inputGradient:
|
||||||
|
channelTheme.inputGradient ?? this.channelTheme.inputGradient,
|
||||||
|
inputBackground: channelTheme.inputBackground ??
|
||||||
|
this.channelTheme.inputBackground,
|
||||||
|
) ??
|
||||||
|
this.channelTheme,
|
||||||
|
messageTheme: messageTheme?.copyWith(
|
||||||
|
messageText:
|
||||||
|
messageTheme?.messageText ?? this.messageTheme.messageText,
|
||||||
|
messageAuthor: messageTheme?.messageAuthor ??
|
||||||
|
this.messageTheme.messageAuthor,
|
||||||
|
messageMention: messageTheme?.messageMention ??
|
||||||
|
this.messageTheme.messageMention,
|
||||||
|
createdAt: messageTheme?.createdAt ?? this.messageTheme.createdAt,
|
||||||
|
replies: messageTheme?.replies ?? this.messageTheme.replies,
|
||||||
|
fontFamily:
|
||||||
|
messageTheme?.fontFamily ?? this.messageTheme.fontFamily,
|
||||||
|
ownMessageBackgroundColor:
|
||||||
|
messageTheme?.ownMessageBackgroundColor ??
|
||||||
|
this.messageTheme.ownMessageBackgroundColor,
|
||||||
|
otherMessageBackgroundColor:
|
||||||
|
messageTheme?.otherMessageBackgroundColor ??
|
||||||
|
this.messageTheme.otherMessageBackgroundColor,
|
||||||
|
avatarTheme:
|
||||||
|
messageTheme?.avatarTheme ?? this.messageTheme.avatarTheme,
|
||||||
|
) ??
|
||||||
|
this.messageTheme,
|
||||||
);
|
);
|
||||||
|
|
||||||
static StreamChatThemeData getDefaultTheme(ThemeData theme) {
|
static StreamChatThemeData getDefaultTheme(ThemeData theme) {
|
||||||
@@ -182,7 +225,15 @@ class ChannelTheme {
|
|||||||
Color inputBackground,
|
Color inputBackground,
|
||||||
}) =>
|
}) =>
|
||||||
ChannelTheme(
|
ChannelTheme(
|
||||||
channelHeaderTheme: channelHeaderTheme ?? this.channelHeaderTheme,
|
channelHeaderTheme: channelHeaderTheme?.copyWith(
|
||||||
|
title: channelHeaderTheme?.title ?? this.channelHeaderTheme.title,
|
||||||
|
lastMessageAt: channelHeaderTheme?.lastMessageAt ??
|
||||||
|
this.channelHeaderTheme.lastMessageAt,
|
||||||
|
avatarTheme: channelHeaderTheme?.avatarTheme ??
|
||||||
|
this.channelHeaderTheme.avatarTheme,
|
||||||
|
color: channelHeaderTheme?.color ?? this.channelHeaderTheme.color,
|
||||||
|
) ??
|
||||||
|
this.channelHeaderTheme,
|
||||||
messageInputButtonIconTheme:
|
messageInputButtonIconTheme:
|
||||||
messageInputButtonIconTheme ?? this.messageInputButtonIconTheme,
|
messageInputButtonIconTheme ?? this.messageInputButtonIconTheme,
|
||||||
messageInputButtonTheme:
|
messageInputButtonTheme:
|
||||||
|
|||||||
Reference in New Issue
Block a user