feat(chat): Optimize chat input and message bubble rendering
This commit is contained in:
@@ -1340,9 +1340,7 @@ class _ModernChatInputState extends ConsumerState<ModernChatInput>
|
||||
// For compact mode, render text field shell with floating buttons on sides
|
||||
if (showCompactComposer) {
|
||||
// Build the text field shell
|
||||
Widget textFieldShell = AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 180),
|
||||
curve: Curves.easeOutCubic,
|
||||
Widget textFieldShell = Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: Spacing.md),
|
||||
constraints: const BoxConstraints(minHeight: TouchTarget.input),
|
||||
decoration: shellDecoration,
|
||||
@@ -1404,9 +1402,7 @@ class _ModernChatInputState extends ConsumerState<ModernChatInput>
|
||||
}
|
||||
|
||||
// For expanded mode with quick pills, use the full shell
|
||||
Widget shell = AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 180),
|
||||
curve: Curves.easeOutCubic,
|
||||
Widget shell = Container(
|
||||
decoration: shellDecoration,
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
|
||||
@@ -498,6 +498,12 @@ class _UserMessageBubbleState extends ConsumerState<UserMessageBubble> {
|
||||
final inlineEditFill = context.conduitTheme.surfaceContainer.withValues(
|
||||
alpha: 0.92,
|
||||
);
|
||||
// Use rounded rectangle for multiline, pill for single-line (like chat input)
|
||||
// Consider multiline if text exceeds ~50 chars or contains newlines
|
||||
// Check length first (O(1)) to short-circuit before scanning for newlines
|
||||
final content = widget.message.content;
|
||||
final isMultiline = content.length > 50 || content.contains('\n');
|
||||
final bubbleRadius = isMultiline ? AppBorderRadius.xl : AppBorderRadius.pill;
|
||||
|
||||
return GestureDetector(
|
||||
onLongPress: () => _showMessageMenu(context),
|
||||
@@ -539,9 +545,7 @@ class _UserMessageBubbleState extends ConsumerState<UserMessageBubble> {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: context.conduitTheme.chatBubbleUser,
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppBorderRadius.messageBubble,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(bubbleRadius),
|
||||
),
|
||||
child: _isEditing
|
||||
? Focus(
|
||||
|
||||
Reference in New Issue
Block a user