diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index 4f5517277..34174a658 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -377,21 +377,28 @@ class AgentController extends GetxController { break; case AgentServiceEventType.functionCallResult: - final responseId = event.data['responseId'] ?? ''; +final responseId = event.data['responseId'] ?? ''; final result = event.data['result'] ?? ''; final functionCall = event.data['function_call'] ?? ''; logger.i('Flutter 结束调用 mcp: $result, $functionCall'); if (result.isNotEmpty) { final parsedResult = jsonDecode(result); - final meta = parsedResult["meta"] as String; - final metaResult = jsonDecode(meta); - if (meta.isNotEmpty) { - logger.i('Flutter 结束调用 mcp metaResult: $metaResult'); + final meta = parsedResult["meta"]; + Map metaResult = {}; + + if (meta != null && meta is String && meta.isNotEmpty) { + try { + metaResult = jsonDecode(meta); + } catch (e) { + print('解析meta数据失败: $e'); + } + } + if(metaResult.isNotEmpty){ + // 判断是否为新的回复或响应ID是否改变 if (_isNewAssistantResponse || _currentResponseId != responseId) { // 添加新消息 - messages - .add(Message(isUser: false, text: "", meta: metaResult)); + messages.add(Message(isUser: false, text: "", meta: metaResult)); _isNewAssistantResponse = false; _currentResponseId = responseId; } else { @@ -406,9 +413,6 @@ class AgentController extends GetxController { ); } } - messages.refresh(); - // 滚动到底部 - _scrollToBottom(); } } break; @@ -418,25 +422,6 @@ class AgentController extends GetxController { }); } - // 滚动到底部 - void _scrollToBottom() { - // 使用reverse:true时,此方法可大部分场景下不再需要 - // 保留此方法但简化实现,仅用于特殊情况下的手动滚动 - WidgetsBinding.instance.addPostFrameCallback((_) { - if (scrollController.hasClients) { - try { - scrollController.animateTo( - 0, // 使用reverse:true时,0表示列表底部 - duration: Duration(milliseconds: 300), - curve: Curves.easeOut, - ); - } catch (e) { - logger.e('滚动到底部失败: $e'); - } - } - }); - } - // 发送文本消息 Future sendTextMessage() async { // 如果图片输入是活跃的,使用选中的图片和文本框的内容 diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index 7a65da691..55311e0d0 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -186,7 +186,7 @@ class PairingController extends GetxController { if (Platform.isAndroid) { permissionsToRequest.add(Permission.locationWhenInUse); - // permissionsToRequest.add(Permission.microphone); + permissionsToRequest.add(Permission.microphone); if (await _getAndroidSdkVersion() >= 31) { permissionsToRequest.add(Permission.bluetoothScan); permissionsToRequest.add(Permission.bluetoothConnect);