import 'dart:convert'; import 'dart:typed_data'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:star_lock/talk/starChart/entity/scp_message.dart'; import 'package:star_lock/talk/starChart/handle/other/talk_data_model.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_base_handle.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_handle.dart'; import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart'; import '../../star_chart_manage.dart'; class UdpEchoTestHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handleReq(ScpMessage scpMessage) {} @override void handleResp(ScpMessage scpMessage) { final List payload = scpMessage.Payload; if (payload is String) { EasyLoading.showToast(scpMessage.Payload, duration: 2000.milliseconds); } else { talkDataRepository.addTalkData( TalkDataModel(talkData: TalkData(content: payload, contentType: TalkData_ContentTypeE.Image))); } } @override void handleInvalidReq(ScpMessage scpMessage) {} @override void handleRealTimeData(ScpMessage scpMessage) {} @override deserializePayload( {required int payloadType, required int messageType, required List byte, int? offset, int? PayloadLength, int? spTotal, int? spIndex, int? messageId}) { // 回声测试 if (spTotal != null && spTotal > 1 && messageId != null && spIndex != null) { // 分包处理 return handleFragmentedPayload( messageId: messageId, spTotal: spTotal, spIndex: spIndex, byte: byte, payloadType: payloadType, ); } else { // 如果 spTotal 为 1 或者没有分包信息,直接处理 byte 数据 String payload = utf8.decode(byte); return payload; } } }