Browse Source

style(agent_view): 修复语音/文字输入控件高度不一致问题

weicu
lxm 1 year ago
parent
commit
9264deab5f
  1. 66
      lib/modules/agent/views/agent_view.dart

66
lib/modules/agent/views/agent_view.dart

@ -14,15 +14,14 @@ class AgentView extends StatelessWidget {
final primaryColor = theme.primaryColor;
final backgroundColor = theme.scaffoldBackgroundColor;
final isDarkMode = Theme.of(context).brightness == Brightness.dark;
return Scaffold(
appBar: AppBar(
elevation: 1,
backgroundColor: backgroundColor,
leading: IconButton(
icon: Icon(Icons.arrow_back_ios,
color: isDarkMode ? Colors.white : Colors.black87,
size: 20),
icon: Icon(Icons.arrow_back_ios,
color: isDarkMode ? Colors.white : Colors.black87, size: 20),
onPressed: () => Get.back(),
),
titleSpacing: 0,
@ -88,26 +87,27 @@ class AgentView extends StatelessWidget {
actions: [
// TTS开关
Obx(() => IconButton(
icon: Icon(
controller.isTtsEnabled.value
? Icons.volume_up
: Icons.volume_off,
color: controller.isTtsEnabled.value
? primaryColor
: isDarkMode
? Colors.grey[400]
: Colors.grey,
),
onPressed: () => controller.toggleTts(),
)),
icon: Icon(
controller.isTtsEnabled.value
? Icons.volume_up
: Icons.volume_off,
color: controller.isTtsEnabled.value
? primaryColor
: isDarkMode
? Colors.grey[400]
: Colors.grey,
),
onPressed: () => controller.toggleTts(),
)),
// 更多选项
Container(
width: 34,
height: 34,
margin: const EdgeInsets.only(right: 8),
decoration: BoxDecoration(
color: isDarkMode ? Colors.white.withOpacity(0.1) : Colors.grey[100],
color:
isDarkMode ? Colors.white.withOpacity(0.1) : Colors.grey[100],
shape: BoxShape.circle,
boxShadow: [
if (!isDarkMode)
@ -119,9 +119,8 @@ class AgentView extends StatelessWidget {
],
),
child: PopupMenuButton(
icon: Icon(Icons.more_vert,
color: isDarkMode ? Colors.white : Colors.black87,
size: 20),
icon: Icon(Icons.more_vert,
color: isDarkMode ? Colors.white : Colors.black87, size: 20),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
@ -153,10 +152,12 @@ class AgentView extends StatelessWidget {
() => ListView.builder(
controller: controller.scrollController,
reverse: true,
padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 16),
padding:
const EdgeInsets.symmetric(vertical: 16, horizontal: 16),
itemCount: controller.messages.length,
itemBuilder: (context, index) {
final message = controller.messages[controller.messages.length - 1 - index];
final message = controller
.messages[controller.messages.length - 1 - index];
return Padding(
padding: const EdgeInsets.only(bottom: 8),
child: MessageBubble(
@ -307,6 +308,7 @@ class AgentView extends StatelessWidget {
if (isTextMode) {
// 文本输入模式 - 注意观察图片模式时的高度变化
return Container(
height: 44,
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.grey[200],
@ -330,7 +332,9 @@ class AgentView extends StatelessWidget {
minLines: isImageActive ? 2 : 1,
style: TextStyle(
fontSize: 15,
color: isDarkMode ? Colors.white : Colors.black87,
color: isDarkMode
? Colors.white
: Colors.black87,
),
decoration: InputDecoration(
hintText: isImageActive
@ -470,7 +474,8 @@ class AgentView extends StatelessWidget {
Icon(Icons.camera_alt,
color: primaryColor, size: 20),
const SizedBox(width: 8),
const Text('拍照', style: TextStyle(fontSize: 14)),
const Text('拍照',
style: TextStyle(fontSize: 14)),
],
),
),
@ -481,7 +486,8 @@ class AgentView extends StatelessWidget {
Icon(Icons.photo_library,
color: primaryColor, size: 20),
const SizedBox(width: 8),
const Text('从相册选择', style: TextStyle(fontSize: 14)),
const Text('从相册选择',
style: TextStyle(fontSize: 14)),
],
),
),
@ -506,7 +512,7 @@ class AgentView extends StatelessWidget {
}) {
final theme = Theme.of(context);
final primaryColor = theme.primaryColor;
return GestureDetector(
onTap: onTap,
child: Container(
@ -614,14 +620,14 @@ class _SoundBarState extends State<_SoundBar>
@override
Widget build(BuildContext context) {
final primaryColor = Theme.of(context).primaryColor;
return Container(
width: 2.5,
height: widget.isActive ? _animation.value : 3,
margin: const EdgeInsets.symmetric(horizontal: 1),
decoration: BoxDecoration(
color: widget.isActive
? primaryColor.withOpacity(0.8)
color: widget.isActive
? primaryColor.withOpacity(0.8)
: Colors.grey.withOpacity(0.4),
borderRadius: BorderRadius.circular(1.5),
),

Loading…
Cancel
Save