Browse Source

将AI助手的名称从'DeepVoice AI'更改为'Emma',并添加国际化支持

weicu
lxm 1 year ago
parent
commit
655cee88e3
  1. 31
      lib/modules/agent/controllers/agent_controller.dart
  2. 12
      lib/modules/agent/views/agent_view.dart
  3. 2
      lib/modules/agent/views/message_bubble.dart

31
lib/modules/agent/controllers/agent_controller.dart

@ -13,15 +13,16 @@ import 'package:permission_handler/permission_handler.dart';
import 'package:app_settings/app_settings.dart'; import 'package:app_settings/app_settings.dart';
class Message { class Message {
final bool isUser; final bool isUser; //标识信息是否来自用户还是AI
final String text; final String text; //信息文本内容
final DateTime timestamp; final DateTime timestamp; // 消息时间戳
final bool isRecognizing; // 是否为语音识别中的临时消息 final bool isRecognizing; // 是否为语音识别中的临时消息
final bool hasImage; // 是否包含图片 final bool hasImage; // 是否包含图片
final String? imagePath; // 图片路径 final String? imagePath; // 图片路径
final Map? meta; //卡片数据 final Map? meta; //卡片数据
Message({ Message({
// 构造函数
required this.isUser, required this.isUser,
required this.text, required this.text,
DateTime? timestamp, DateTime? timestamp,
@ -33,14 +34,14 @@ class Message {
} }
class AgentController extends GetxController { class AgentController extends GetxController {
static AgentController get to => Get.find(); static AgentController get to => Get.find(); //单例访问模式
final logger = Logger(); final logger = Logger();
// 聊天消息列表 // 聊天消息列表
final messages = <Message>[].obs; final messages = <Message>[].obs;
// 控制器 // UI控制器
final TextEditingController textController = TextEditingController(); final TextEditingController textController = TextEditingController();
final ScrollController scrollController = ScrollController(); final ScrollController scrollController = ScrollController();
@ -49,10 +50,10 @@ class AgentController extends GetxController {
var isPlaying = false.obs; var isPlaying = false.obs;
var currentUrl = "".obs; var currentUrl = "".obs;
// 状态标志 // 各种状态标志
final isInitialized = false.obs; final isInitialized = false.obs;
final isListening = false.obs; final isListening = false.obs; //是否正在语音识别
final isSpeaking = false.obs; final isSpeaking = false.obs; //是否正在播放tts
final isProcessing = false.obs; final isProcessing = false.obs;
// TTS启用状态 // TTS启用状态
final isTtsEnabled = true.obs; final isTtsEnabled = true.obs;
@ -61,7 +62,7 @@ class AgentController extends GetxController {
final isImageProcessing = false.obs; final isImageProcessing = false.obs;
// 输入模式控制 // 输入模式控制
final isTextInputMode = true.obs; final isTextInputMode = true.obs; //文本输入模式vs语音输入模式
// 当前输入的文本内容 // 当前输入的文本内容
final currentText = ''.obs; final currentText = ''.obs;
@ -86,15 +87,15 @@ class AgentController extends GetxController {
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
_loadTtsPreference(); _loadTtsPreference(); //加载TTS偏好设置
_loadChatHistory(); _loadChatHistory(); //加载聊天历史记录
_subscribeToEvents(); _subscribeToEvents(); //订阅代理服务事件
} }
@override @override
void onClose() { void onClose() {
AgentService.stopConversation(); AgentService.stopConversation(); // 停止当前会话
AgentService.stopTts(); AgentService.stopTts(); // 停止当前语音
textController.dispose(); textController.dispose();
scrollController.dispose(); scrollController.dispose();
_eventSubscription?.cancel(); _eventSubscription?.cancel();
@ -179,7 +180,7 @@ class AgentController extends GetxController {
void _addWelcomeMessage() { void _addWelcomeMessage() {
messages.add(Message( messages.add(Message(
isUser: false, isUser: false,
text: '你好!我是DeepVoice AI助手,我能帮你:\n\n' text: '你好!我是Emma,我能帮你:\n\n'
'• 回答问题和提供信息\n' '• 回答问题和提供信息\n'
'• 实时语音翻译\n' '• 实时语音翻译\n'
'• 推荐音乐和播客\n' '• 推荐音乐和播客\n'

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

@ -52,7 +52,7 @@ class AgentView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'DeepVoice AI', 'Emma',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -71,7 +71,7 @@ class AgentView extends StatelessWidget {
), ),
const SizedBox(width: 4), const SizedBox(width: 4),
Text( Text(
'在线', '在线'.tr,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: Colors.green, color: Colors.green,
@ -131,7 +131,7 @@ class AgentView extends StatelessWidget {
children: [ children: [
Icon(Icons.delete_outline, color: primaryColor, size: 20), Icon(Icons.delete_outline, color: primaryColor, size: 20),
const SizedBox(width: 8), const SizedBox(width: 8),
const Text('清除聊天记录', style: TextStyle(fontSize: 14)), Text('清除聊天记录'.tr, style: TextStyle(fontSize: 14)),
], ],
), ),
onTap: () => Future.delayed( onTap: () => Future.delayed(
@ -246,19 +246,19 @@ class AgentView extends StatelessWidget {
children: [ children: [
_buildPromptChip( _buildPromptChip(
context: context, context: context,
label: '总结图片内容', label: '总结图片内容'.tr,
onTap: () => controller.summarizeImage(), onTap: () => controller.summarizeImage(),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
_buildPromptChip( _buildPromptChip(
context: context, context: context,
label: '抽取图像文字', label: '抽取图像文字'.tr,
onTap: () => controller.extractTextFromImage(), onTap: () => controller.extractTextFromImage(),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
_buildPromptChip( _buildPromptChip(
context: context, context: context,
label: '翻译图像文字', label: '翻译图像文字'.tr,
onTap: () => controller.translateImageText(), onTap: () => controller.translateImageText(),
), ),
], ],

2
lib/modules/agent/views/message_bubble.dart

@ -311,7 +311,7 @@ class MessageBubble extends GetView<AgentController> {
), ),
const SizedBox(width: 6), const SizedBox(width: 6),
Text( Text(
'雨天时光 · 播放列表', '播放列表'.tr,
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,

Loading…
Cancel
Save