Browse Source

上传卡片序列化 修复

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
b7dfc99c6d
  1. 59
      lib/modules/agent/controllers/agent_controller.dart
  2. 4
      lib/modules/agent/views/message_bubble.dart
  3. 19
      lib/modules/pairing/controllers/pairing_controller.dart

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

@ -347,35 +347,38 @@ class AgentController extends GetxController {
break;
case AgentServiceEventType.functionCallResult:
final responseId = event.data['responseId'] ?? '';
final result = event.data['result'] ?? '';
final parsedResult = result.isNotEmpty ? jsonDecode(result) : {};
final meta = parsedResult["meta"] ?? {};
// final functionCall = event.data['function_call'] ?? '';
logger.d('mcp 执行结果meta: $meta');
// if (meta.isNotEmpty) {
// // logger.i('Flutter 结束调用 mcp metaResult: $metaResult');
// // 判断是否为新的回复或响应ID是否改变
// if (_isNewAssistantResponse) {
// // 添加新消息
// messages.add(Message(isUser: false, text: "", meta: meta));
// _isNewAssistantResponse = false;
// } else {
// // 更新最后一条消息
// final lastIndex = messages.length - 1;
// if (lastIndex >= 0 && !messages[lastIndex].isUser) {
// messages[lastIndex] = Message(
// isUser: false,
// text: messages[lastIndex].text,
// meta: meta,
// timestamp: messages[lastIndex].timestamp,
// );
// }
// }
// _scrollToBottom();
// }
logger.i('mcp 结果处理完成');
final functionCall = event.data['function_call'] ?? '';
logger.i('Flutter 结束调用 mcp: $result, $functionCall');
if (result.isNotEmpty) {
final parsedResult = jsonDecode(result);
final meta = parsedResult["meta"] ?? "";
final metaResult = jsonDecode(meta);
logger.i('Flutter 结束调用 mcp metaResult: $metaResult');
// 判断是否为新的回复或响应ID是否改变
if (_isNewAssistantResponse || _currentResponseId != responseId) {
// 添加新消息
messages.add(Message(isUser: false, text: "", meta: metaResult));
_isNewAssistantResponse = false;
_currentResponseId = responseId;
} else {
// 更新最后一条消息
final lastIndex = messages.length - 1;
if (lastIndex >= 0 && !messages[lastIndex].isUser) {
messages[lastIndex] = Message(
isUser: false,
text: messages[lastIndex].text,
meta: meta,
timestamp: messages[lastIndex].timestamp,
);
}
}
// 滚动到底部
_scrollToBottom();
}
break;
default:
break;

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

@ -209,14 +209,10 @@ class MessageBubble extends GetView<AgentController> {
final rawList = mate!['card_musiclist']['musics'] as List;
final playlist =
rawList.map((e) => Map<String, dynamic>.from(e)).toList();
// final playlist =
// mate!['card_musiclist']['musics'] as List<Map<String, String>>;
//音乐播放列表
return _buildMusicContent(context, playlist);
} else if (mate!.keys.contains('card_weather')) {
final city = mate!['card_weather']['city'] as String;
final rawList = mate!['card_weather']['dayweather'] as List;
final daylist =
rawList.map((e) => Map<String, dynamic>.from(e)).toList();

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

@ -14,6 +14,8 @@ import 'package:ble_service/ble_service.dart';
class PairingController extends GetxController {
static PairingController get to => Get.find();
// 需要设备
final bool needdeivice = false;
// 状态标志
final isLoading = false.obs;
@ -243,7 +245,8 @@ class PairingController extends GetxController {
await _checkDevicePairingStatus();
// 如果还未配对且设备合规,启动配对流程
if (!_companionAssociated.value && _isValidDeviceName(currentDevice!.name)) {
if (!_companionAssociated.value &&
_isValidDeviceName(currentDevice!.name)) {
_startCompanionAssociation();
}
}
@ -271,9 +274,11 @@ class PairingController extends GetxController {
if (isDeviceConnected) {
if (Platform.isAndroid && !isCompanionAssociated && _isAssociating) {
statusDescription.value = '${'associatingDevice'.tr} ${currentDevice!.name}';
statusDescription.value =
'${'associatingDevice'.tr} ${currentDevice!.name}';
} else {
statusDescription.value = '${'connectedDevice'.tr} ${currentDevice!.name}';
statusDescription.value =
'${'connectedDevice'.tr} ${currentDevice!.name}';
}
return;
}
@ -286,7 +291,6 @@ class PairingController extends GetxController {
statusDescription.value = 'notFound'.tr;
}
/// 启动Companion设备关联流程
Future<void> _startCompanionAssociation() async {
// 如果不是Android平台,已跳转,已完成关联或正在进行关联,直接返回
@ -339,7 +343,6 @@ class PairingController extends GetxController {
await _bleService.registerBackgroundScan(
macAddress: currentDevice!.address);
// 关联成功后跳转
_autoNavigateToHome();
} else {
@ -359,7 +362,7 @@ class PairingController extends GetxController {
/// 自动跳转到主页
Future<void> _autoNavigateToHome() async {
if (_isNavigatingToHome || !isDeviceConnected) return;
if (needdeivice && (_isNavigatingToHome || !isDeviceConnected)) return;
// 启动BLE后台服务
await _startAgentService();
@ -375,7 +378,7 @@ class PairingController extends GetxController {
/// 启动BLE后台服务
Future<void> _startAgentService() async {
try {
if (!isDeviceConnected) return;
if (needdeivice && !isDeviceConnected) return;
final result = await BleManager.to.startAgentService();
Logger.info(result ? 'BLE后台服务启动成功' : 'BLE后台服务启动失败');
@ -435,7 +438,7 @@ class PairingController extends GetxController {
}
/// 跳过连接
void skipConnecting() async{
void skipConnecting() async {
// 启动BLE后台服务
await _startAgentService();
_isNavigatingToHome = true;

Loading…
Cancel
Save