AI配置化

This commit is contained in:
2026-09-28 11:57:54 +08:00
parent 6176c49964
commit d52775ec10
8 changed files with 839 additions and 4 deletions
+40
View File
@@ -7,6 +7,8 @@ import '../../api/ai_api.dart';
import '../../core/network/api_env.dart';
import '../../models/ai.dart';
import '../../providers/ai_provider.dart';
import '../../providers/ai_config_provider.dart';
import 'ai_config_page.dart';
import '../../utils/toast.dart';
import '../../widgets/state_views.dart';
import '../../widgets/cute_icon.dart';
@@ -105,6 +107,11 @@ class _AssistantPageState extends ConsumerState<AssistantPage> {
),
),
),
const SizedBox(width: 8),
// 当前用的哪个模型 —— 点一下就能换。
// 放在标题旁边而不是藏进菜单里,是因为「刚才那句话怎么答得怪怪的」
// 十有八九就是切错了模型,得让它随时可见。
Flexible(child: _configChip(context)),
const Spacer(),
_iconButton(
icon: Icons.history,
@@ -121,6 +128,39 @@ class _AssistantPageState extends ConsumerState<AssistantPage> {
);
}
/// 顶栏上的「当前模型」小胶囊
Widget _configChip(BuildContext context) {
final active = ref.watch(activeAiConfigProvider);
final label = active?.name ?? '--';
return GestureDetector(
onTap: () => openAiConfigPage(context),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 9, vertical: 4),
decoration: BoxDecoration(
color: const Color(0xFFFFF3E6),
borderRadius: BorderRadius.circular(10),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.memory, size: 12, color: Color(0xFFC8956E)),
const SizedBox(width: 4),
Flexible(
child: Text(
label,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(fontSize: 11.5, color: Color(0xFF8D6E63)),
),
),
const Icon(Icons.expand_more, size: 13, color: Color(0xFFBCAAA4)),
],
),
),
);
}
Widget _iconButton({
required IconData icon,
required String tooltip,