Browse Source

上传卡片序列化 修复

weicu
liwei1dao 1 year ago
parent
commit
e5b727fb8c
  1. 59
      lib/modules/agent/controllers/agent_controller.dart
  2. 4
      lib/modules/agent/views/message_bubble.dart
  3. 23
      lib/modules/pairing/controllers/pairing_controller.dart

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

@ -347,35 +347,38 @@ class AgentController extends GetxController {
break; break;
case AgentServiceEventType.functionCallResult: case AgentServiceEventType.functionCallResult:
final responseId = event.data['responseId'] ?? '';
final result = event.data['result'] ?? ''; final result = event.data['result'] ?? '';
final parsedResult = result.isNotEmpty ? jsonDecode(result) : {}; final functionCall = event.data['function_call'] ?? '';
final meta = parsedResult["meta"] ?? {}; logger.i('Flutter 结束调用 mcp: $result, $functionCall');
// final functionCall = event.data['function_call'] ?? '';
logger.d('mcp 执行结果meta: $meta'); if (result.isNotEmpty) {
final parsedResult = jsonDecode(result);
// if (meta.isNotEmpty) { final meta = parsedResult["meta"] ?? "";
// // logger.i('Flutter 结束调用 mcp metaResult: $metaResult'); final metaResult = jsonDecode(meta);
// // 判断是否为新的回复或响应ID是否改变
// if (_isNewAssistantResponse) { logger.i('Flutter 结束调用 mcp metaResult: $metaResult');
// // 添加新消息 // 判断是否为新的回复或响应ID是否改变
// messages.add(Message(isUser: false, text: "", meta: meta)); if (_isNewAssistantResponse || _currentResponseId != responseId) {
// _isNewAssistantResponse = false; // 添加新消息
// } else { messages.add(Message(isUser: false, text: "", meta: metaResult));
// // 更新最后一条消息 _isNewAssistantResponse = false;
// final lastIndex = messages.length - 1; _currentResponseId = responseId;
// if (lastIndex >= 0 && !messages[lastIndex].isUser) { } else {
// messages[lastIndex] = Message( // 更新最后一条消息
// isUser: false, final lastIndex = messages.length - 1;
// text: messages[lastIndex].text, if (lastIndex >= 0 && !messages[lastIndex].isUser) {
// meta: meta, messages[lastIndex] = Message(
// timestamp: messages[lastIndex].timestamp, isUser: false,
// ); text: messages[lastIndex].text,
// } meta: meta,
// } timestamp: messages[lastIndex].timestamp,
);
// _scrollToBottom(); }
// } }
logger.i('mcp 结果处理完成'); // 滚动到底部
_scrollToBottom();
}
break; break;
default: default:
break; 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 rawList = mate!['card_musiclist']['musics'] as List;
final playlist = final playlist =
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); rawList.map((e) => Map<String, dynamic>.from(e)).toList();
// final playlist =
// mate!['card_musiclist']['musics'] as List<Map<String, String>>;
//音乐播放列表 //音乐播放列表
return _buildMusicContent(context, playlist); return _buildMusicContent(context, playlist);
} else if (mate!.keys.contains('card_weather')) { } else if (mate!.keys.contains('card_weather')) {
final city = mate!['card_weather']['city'] as String; final city = mate!['card_weather']['city'] as String;
final rawList = mate!['card_weather']['dayweather'] as List; final rawList = mate!['card_weather']['dayweather'] as List;
final daylist = final daylist =
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); rawList.map((e) => Map<String, dynamic>.from(e)).toList();

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

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

Loading…
Cancel
Save