@@ -30,6 +30,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
3030 static final light = MessageListTheme ._(
3131 dateSeparator: Colors .black,
3232 dateSeparatorText: const HSLColor .fromAHSL (0.75 , 0 , 0 , 0.15 ).toColor (),
33+ dmMessageBgDefault: const HSLColor .fromAHSL (1 , 45 , 0.20 , 0.96 ).toColor (),
3334 dmRecipientHeaderBg: const HSLColor .fromAHSL (1 , 46 , 0.35 , 0.93 ).toColor (),
3435 messageTimestamp: const HSLColor .fromAHSL (0.8 , 0 , 0 , 0.2 ).toColor (),
3536 recipientHeaderText: const HSLColor .fromAHSL (1 , 0 , 0 , 0.15 ).toColor (),
@@ -55,6 +56,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
5556 static final dark = MessageListTheme ._(
5657 dateSeparator: Colors .white,
5758 dateSeparatorText: const HSLColor .fromAHSL (0.75 , 0 , 0 , 1 ).toColor (),
59+ dmMessageBgDefault: const HSLColor .fromAHSL (1 , 46 , 0.07 , 0.16 ).toColor (),
5860 dmRecipientHeaderBg: const HSLColor .fromAHSL (1 , 46 , 0.15 , 0.2 ).toColor (),
5961 messageTimestamp: const HSLColor .fromAHSL (0.8 , 0 , 0 , 0.85 ).toColor (),
6062 recipientHeaderText: const HSLColor .fromAHSL (0.8 , 0 , 0 , 1 ).toColor (),
@@ -79,6 +81,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
7981 MessageListTheme ._({
8082 required this .dateSeparator,
8183 required this .dateSeparatorText,
84+ required this .dmMessageBgDefault,
8285 required this .dmRecipientHeaderBg,
8386 required this .messageTimestamp,
8487 required this .recipientHeaderText,
@@ -103,6 +106,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
103106
104107 final Color dateSeparator;
105108 final Color dateSeparatorText;
109+ final Color dmMessageBgDefault;
106110 final Color dmRecipientHeaderBg;
107111 final Color messageTimestamp;
108112 final Color recipientHeaderText;
@@ -118,6 +122,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
118122 MessageListTheme copyWith ({
119123 Color ? dateSeparator,
120124 Color ? dateSeparatorText,
125+ Color ? dmMessageBgDefault,
121126 Color ? dmRecipientHeaderBg,
122127 Color ? messageTimestamp,
123128 Color ? recipientHeaderText,
@@ -132,6 +137,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
132137 return MessageListTheme ._(
133138 dateSeparator: dateSeparator ?? this .dateSeparator,
134139 dateSeparatorText: dateSeparatorText ?? this .dateSeparatorText,
140+ dmMessageBgDefault: dmMessageBgDefault ?? this .dmMessageBgDefault,
135141 dmRecipientHeaderBg: dmRecipientHeaderBg ?? this .dmRecipientHeaderBg,
136142 messageTimestamp: messageTimestamp ?? this .messageTimestamp,
137143 recipientHeaderText: recipientHeaderText ?? this .recipientHeaderText,
@@ -153,6 +159,7 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
153159 return MessageListTheme ._(
154160 dateSeparator: Color .lerp (dateSeparator, other.dateSeparator, t)! ,
155161 dateSeparatorText: Color .lerp (dateSeparatorText, other.dateSeparatorText, t)! ,
162+ dmMessageBgDefault: Color .lerp (dmMessageBgDefault, other.dmMessageBgDefault, t)! ,
156163 dmRecipientHeaderBg: Color .lerp (dmRecipientHeaderBg, other.dmRecipientHeaderBg, t)! ,
157164 messageTimestamp: Color .lerp (messageTimestamp, other.messageTimestamp, t)! ,
158165 recipientHeaderText: Color .lerp (recipientHeaderText, other.recipientHeaderText, t)! ,
@@ -165,6 +172,13 @@ class MessageListTheme extends ThemeExtension<MessageListTheme> {
165172 unsubscribedStreamRecipientHeaderBg: Color .lerp (unsubscribedStreamRecipientHeaderBg, other.unsubscribedStreamRecipientHeaderBg, t)! ,
166173 );
167174 }
175+
176+ Color getMessageBackgroundColor (Message message) {
177+ return switch (message) {
178+ StreamMessage () => streamMessageBgDefault,
179+ DmMessage () => dmMessageBgDefault,
180+ };
181+ }
168182}
169183
170184/// The interface for the state of a [MessageListPage] .
@@ -916,8 +930,9 @@ class DateSeparator extends StatelessWidget {
916930
917931 final line = BorderSide (width: 0 , color: messageListTheme.dateSeparator);
918932
919- // TODO(#681) use different color for DM messages
920- return ColoredBox (color: messageListTheme.streamMessageBgDefault,
933+ final backgroundColor = messageListTheme.getMessageBackgroundColor (message);
934+
935+ return ColoredBox (color: backgroundColor,
921936 child: Padding (
922937 padding: const EdgeInsets .symmetric (vertical: 8 , horizontal: 2 ),
923938 child: Row (children: [
@@ -958,13 +973,15 @@ class MessageItem extends StatelessWidget {
958973 Widget build (BuildContext context) {
959974 final message = item.message;
960975 final messageListTheme = MessageListTheme .of (context);
976+ final backgroundColor = messageListTheme.getMessageBackgroundColor (message);
977+
961978 return StickyHeaderItem (
962979 allowOverflow: ! item.isLastInBlock,
963980 header: header,
964981 child: _UnreadMarker (
965982 isRead: message.flags.contains (MessageFlag .read),
966983 child: ColoredBox (
967- color: messageListTheme.streamMessageBgDefault ,
984+ color: backgroundColor ,
968985 child: Column (children: [
969986 MessageWithPossibleSender (item: item),
970987 if (trailingWhitespace != null && item.isLastInBlock) SizedBox (height: trailingWhitespace! ),
0 commit comments