cancelResponse method
取消AI响应(打断)
Implementation
Future<bool> cancelResponse() async {
try {
// 发送中断命令
final params = {
'AppId': config.appId,
'RoomId': config.roomId,
'TaskId': config.taskId,
'Command': 'interrupt',
};
final result = await _post(
action: ActionType.updateVoiceChat,
name: 'update',
params: params,
);
// 更新最后一条AI消息为中断状态
for (int i = _messageHistory.length - 1; i >= 0; i--) {
final message = _messageHistory[i];
if (message.type == MessageType.ai) {
final updatedMessage = message.copyWith(isInterrupted: true);
_messageHistory[i] = updatedMessage;
_messageController.add(updatedMessage);
break;
}
}
// 更新状态为准备就绪
_setState(AigcClientState.ready);
// 更灵活地处理成功响应
if (result.containsKey('Result')) {
return true;
}
return false;
} catch (e) {
debugPrint('[AigcClient] 取消响应失败: $e');
return false;
}
}