fix: 首页UI修复 - 底部溢出/胶囊/折叠/抽屉/screen适配

- 底部溢出:移除手动 viewInsets,让 Scaffold 默认处理键盘
- 智能体胶囊:新增常驻选择条,6个胶囊始终可见
- 任务卡片:双向切换,折叠后显示"点击展开"条
- 侧边栏:去掉固定高度,自适应内容
- K70适配:头像/字号/padding 全面紧凑化
This commit is contained in:
MingNian
2026-06-03 13:51:51 +08:00
parent 7b898f8660
commit 36ad334643
4 changed files with 189 additions and 97 deletions

View File

@@ -75,24 +75,22 @@ class HealthDrawer extends ConsumerWidget {
TextButton(onPressed: () => ref.invalidate(conversationListProvider), child: const Text('刷新', style: TextStyle(fontSize: 12, color: Color(0xFF635BFF)))),
]),
),
SizedBox(
height: 200,
child: conversations.when(
conversations.when(
data: (items) {
if (items.isEmpty) {
return const Center(child: Text('暂无历史对话', style: TextStyle(color: Color(0xFF999999), fontSize: 14)));
return const Padding(padding: EdgeInsets.symmetric(vertical: 20), child: Center(child: Text('暂无历史对话', style: TextStyle(color: Color(0xFF999999), fontSize: 13))));
}
return ListView.builder(
shrinkWrap: true,
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
itemCount: items.length,
itemBuilder: (ctx, i) => _ConversationItem(item: items[i], ref: ref),
child: Column(
mainAxisSize: MainAxisSize.min,
children: items.map((item) => _ConversationItem(item: item, ref: ref)).toList(),
),
);
},
loading: () => const Center(child: CircularProgressIndicator(strokeWidth: 2)),
error: (_, __) => const Center(child: Text('加载失败', style: TextStyle(color: Color(0xFF999999), fontSize: 14))),
),
),
const Divider(),
_DrawerItem(icon: Icons.logout, label: '退出登录', onTap: () async {
@@ -149,30 +147,31 @@ class _ConversationItem extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 3),
decoration: BoxDecoration(
color: const Color(0xFFF8F7FF),
borderRadius: BorderRadius.circular(12),
borderRadius: BorderRadius.circular(10),
),
child: ListTile(
leading: Container(
width: 40,
height: 40,
width: 36,
height: 36,
decoration: BoxDecoration(
color: const Color(0xFFEDEBFF),
borderRadius: BorderRadius.circular(10),
borderRadius: BorderRadius.circular(8),
),
child: Icon(_getAgentIcon(item.agent), size: 18, color: const Color(0xFF635BFF)),
child: Icon(_getAgentIcon(item.agent), size: 16, color: const Color(0xFF635BFF)),
),
title: Text(item.title, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle(fontSize: 14, fontWeight: FontWeight.w500)),
subtitle: Text(item.lastMessage, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 12, color: Colors.grey[500])),
title: Text(item.title, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle(fontSize: 13, fontWeight: FontWeight.w500)),
subtitle: Text(item.lastMessage, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 11, color: Colors.grey[500])),
trailing: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Text(_formatTime(item.updatedAt), style: const TextStyle(fontSize: 10, color: Color(0xFFCCCCCC))),
const SizedBox(height: 4),
Text(_formatTime(item.updatedAt), style: const TextStyle(fontSize: 9, color: Color(0xFFCCCCCC))),
const SizedBox(height: 2),
PopupMenuButton<int>(
icon: const Icon(Icons.more_vert, size: 16, color: Color(0xFFCCCCCC)),
icon: const Icon(Icons.more_vert, size: 14, color: Color(0xFFCCCCCC)),
itemBuilder: (_) => [
const PopupMenuItem(value: 1, child: Text('继续聊')),
const PopupMenuItem(value: 2, child: Text('删除')),