diff --git a/assets/images/ai1.png b/assets/images/ai1.png index 142e85c..a2b6bec 100644 Binary files a/assets/images/ai1.png and b/assets/images/ai1.png differ diff --git a/assets/images/ai2.png b/assets/images/ai2.png index 5ef2db4..c370938 100644 Binary files a/assets/images/ai2.png and b/assets/images/ai2.png differ diff --git a/assets/images/copy.png b/assets/images/copy.png new file mode 100644 index 0000000..9591fa4 Binary files /dev/null and b/assets/images/copy.png differ diff --git a/assets/images/disliked1.png b/assets/images/disliked1.png new file mode 100644 index 0000000..00c57fc Binary files /dev/null and b/assets/images/disliked1.png differ diff --git a/assets/images/disliked2.png b/assets/images/disliked2.png new file mode 100644 index 0000000..d19f59e Binary files /dev/null and b/assets/images/disliked2.png differ diff --git a/assets/images/liked1.png b/assets/images/liked1.png new file mode 100644 index 0000000..464fb8b Binary files /dev/null and b/assets/images/liked1.png differ diff --git a/assets/images/liked2.png b/assets/images/liked2.png new file mode 100644 index 0000000..13ffc70 Binary files /dev/null and b/assets/images/liked2.png differ diff --git a/assets/images/open_in_full.png b/assets/images/open_in_full.png new file mode 100644 index 0000000..23a907f Binary files /dev/null and b/assets/images/open_in_full.png differ diff --git a/lib/screens/part_screen.dart b/lib/screens/part_screen.dart index 929c3f2..4ccd912 100644 --- a/lib/screens/part_screen.dart +++ b/lib/screens/part_screen.dart @@ -141,10 +141,10 @@ class _PartScreenState extends State { top: 6, right: 6, child: IconButton( - icon: const Icon( - Icons.open_in_full, - color: Colors.white, - size: 24, + icon: Image.asset( + 'assets/images/open_in_full.png', + width: 24, + height: 24 ), onPressed: _openFullScreen, padding: EdgeInsets.zero, diff --git a/lib/widgets/chat_bubble.dart b/lib/widgets/chat_bubble.dart index 8e79b56..9e1ad84 100644 --- a/lib/widgets/chat_bubble.dart +++ b/lib/widgets/chat_bubble.dart @@ -46,7 +46,17 @@ class _ChatBubbleState extends State { color: message.isUser ? CommonUtil.commonColor : Colors.white.withValues(alpha: 0.12), - borderRadius: BorderRadius.circular(12), + borderRadius: message.isUser + ? BorderRadius.only( + topLeft: Radius.circular(12), + bottomLeft: Radius.circular(12), + bottomRight: Radius.circular(12), + ) + : BorderRadius.only( + topRight: Radius.circular(12), + bottomLeft: Radius.circular(12), + bottomRight: Radius.circular(12), + ), ), child: _buildAssistantContent(isThinking), ) @@ -58,7 +68,17 @@ class _ChatBubbleState extends State { color: message.isUser ? CommonUtil.commonColor : Colors.white.withValues(alpha: 0.12), - borderRadius: BorderRadius.circular(12), + borderRadius: message.isUser + ? BorderRadius.only( + topLeft: Radius.circular(12), + bottomLeft: Radius.circular(12), + bottomRight: Radius.circular(12), + ) + : BorderRadius.only( + topRight: Radius.circular(12), + bottomLeft: Radius.circular(12), + bottomRight: Radius.circular(12), + ), ), child: message.isUser ? _buildUserContent() @@ -81,8 +101,7 @@ class _ChatBubbleState extends State { _buildStatusRow(hasBottomMargin: true), Text( message.text, - style: TextStyle( - color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold), + style: TextStyle(color: Colors.white, fontSize: 16), ) ], ], @@ -239,7 +258,10 @@ class _ChatBubbleState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 6), - const Divider(color: Colors.grey, height: 1), + const Opacity( + opacity: 0.2, + child: Divider(color: Colors.grey, height: 1), + ), const SizedBox(height: 6), SizedBox( height: 24, @@ -256,17 +278,17 @@ class _ChatBubbleState extends State { mainAxisSize: MainAxisSize.min, children: [ const Icon(Icons.stop_circle_outlined, - size: 16, color: CommonUtil.commonColor), + size: 18, color: CommonUtil.commonColor), const SizedBox(width: 4), Text( Intl.getCurrentLocale().startsWith('zh') ? '停止回答' : 'Stop', style: const TextStyle( - color: Colors.white, fontSize: 12)), + color: Colors.white, fontSize: 14)), ], ), - ), + ) ], ) : Row( @@ -293,10 +315,14 @@ class _ChatBubbleState extends State { ? '已复制到剪贴板' : 'Copied to clipboard'); }, - child: const Padding( - padding: EdgeInsets.only(left: 12), - child: Icon(Icons.content_copy, - size: 16, color: Colors.white), + child: Padding( + padding: const EdgeInsets.only(left: 12), + child: Image.asset( + 'assets/images/copy.png', + width: 20, + height: 20, + color: Colors.white, + ), ), ), InkWell( @@ -308,13 +334,11 @@ class _ChatBubbleState extends State { }, child: Padding( padding: const EdgeInsets.only(left: 12), - child: Icon( - Icons.thumb_up_off_alt, - size: 16, - color: _liked - ? CommonUtil.commonColor - : Colors.white, - ), + child: _liked + ? Image.asset('assets/images/liked2.png', + width: 20, height: 20) + : Image.asset('assets/images/liked1.png', + width: 20, height: 20), ), ), InkWell( @@ -326,13 +350,11 @@ class _ChatBubbleState extends State { }, child: Padding( padding: const EdgeInsets.only(left: 12), - child: Icon( - Icons.thumb_down_off_alt, - size: 16, - color: _disliked - ? CommonUtil.commonColor - : Colors.white, - ), + child: _disliked + ? Image.asset('assets/images/disliked2.png', + width: 20, height: 20) + : Image.asset('assets/images/disliked1.png', + width: 20, height: 20) ), ), ],