import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:star_lock/talk/startChart/entity/scp_message.dart'; import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; import '../../start_chart_manage.dart'; class UdpTalkAcceptHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handle(ScpMessage scpMessage) { final GenericResp genericResp = scpMessage.Payload; if (checkGenericRespSuccess(genericResp)) { // 同意接听 // 回复成功消息 startChartManage.sendGenericRespSuccessMessage( ToPeerId: scpMessage.FromPeerId!, FromPeerId: scpMessage.ToPeerId!, PayloadType: scpMessage.PayloadType!, ); // 启动通话保持 startChartManage.startTalkPingMessageTimer(); // 启动通话保持监听定时器 talkePingOverTimeTimerManager.startTimer(); // 设置通话保持超时后的事件 talkePingOverTimeTimerManager.setOnTimeout(() { EasyLoading.showToast('通话异常中断', duration: 2000.milliseconds); }); // 启动对讲数据监听定时器 talkDataOverTimeTimerManager.startTimer(); // 设置对讲数据超时后的事件 talkDataOverTimeTimerManager.setOnTimeout(() { EasyLoading.showToast('通话连接失败', duration: 2000.milliseconds); }); } } }