Browse Source

Merge commit 'f68e38d8797f6647f4a7c80179550f205d4d60f6' into lxm

weicu
lxm 1 year ago
parent
commit
271d4522a5
  1. 43
      lib/modules/agent/controllers/agent_controller.dart
  2. 2
      lib/modules/pairing/controllers/pairing_controller.dart

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

@ -377,21 +377,28 @@ class AgentController extends GetxController {
break; break;
case AgentServiceEventType.functionCallResult: case AgentServiceEventType.functionCallResult:
final responseId = event.data['responseId'] ?? ''; final responseId = event.data['responseId'] ?? '';
final result = event.data['result'] ?? ''; final result = event.data['result'] ?? '';
final functionCall = event.data['function_call'] ?? ''; final functionCall = event.data['function_call'] ?? '';
logger.i('Flutter 结束调用 mcp: $result, $functionCall'); logger.i('Flutter 结束调用 mcp: $result, $functionCall');
if (result.isNotEmpty) { if (result.isNotEmpty) {
final parsedResult = jsonDecode(result); final parsedResult = jsonDecode(result);
final meta = parsedResult["meta"] as String; final meta = parsedResult["meta"];
final metaResult = jsonDecode(meta); Map<String, dynamic> metaResult = {};
if (meta.isNotEmpty) {
logger.i('Flutter 结束调用 mcp metaResult: $metaResult'); if (meta != null && meta is String && meta.isNotEmpty) {
try {
metaResult = jsonDecode(meta);
} catch (e) {
print('解析meta数据失败: $e');
}
}
if(metaResult.isNotEmpty){
// 判断是否为新的回复或响应ID是否改变 // 判断是否为新的回复或响应ID是否改变
if (_isNewAssistantResponse || _currentResponseId != responseId) { if (_isNewAssistantResponse || _currentResponseId != responseId) {
// 添加新消息 // 添加新消息
messages messages.add(Message(isUser: false, text: "", meta: metaResult));
.add(Message(isUser: false, text: "", meta: metaResult));
_isNewAssistantResponse = false; _isNewAssistantResponse = false;
_currentResponseId = responseId; _currentResponseId = responseId;
} else { } else {
@ -406,9 +413,6 @@ class AgentController extends GetxController {
); );
} }
} }
messages.refresh();
// 滚动到底部
_scrollToBottom();
} }
} }
break; 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<void> sendTextMessage() async { Future<void> sendTextMessage() async {
// 如果图片输入是活跃的,使用选中的图片和文本框的内容 // 如果图片输入是活跃的,使用选中的图片和文本框的内容

2
lib/modules/pairing/controllers/pairing_controller.dart

@ -186,7 +186,7 @@ class PairingController extends GetxController {
if (Platform.isAndroid) { if (Platform.isAndroid) {
permissionsToRequest.add(Permission.locationWhenInUse); permissionsToRequest.add(Permission.locationWhenInUse);
// permissionsToRequest.add(Permission.microphone); permissionsToRequest.add(Permission.microphone);
if (await _getAndroidSdkVersion() >= 31) { if (await _getAndroidSdkVersion() >= 31) {
permissionsToRequest.add(Permission.bluetoothScan); permissionsToRequest.add(Permission.bluetoothScan);
permissionsToRequest.add(Permission.bluetoothConnect); permissionsToRequest.add(Permission.bluetoothConnect);

Loading…
Cancel
Save