fix:增加对讲通话状态类
This commit is contained in:
parent
661ba90f08
commit
86b985c4a4
@ -21,6 +21,7 @@ import 'package:star_lock/talk/startChart/entity/star_chart_register_node_entity
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_handler_factory.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/talk_expect.pb.dart';
|
||||
import 'package:star_lock/talk/startChart/start_chart_talk_status.dart';
|
||||
import 'package:star_lock/tools/deviceInfo_utils.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
@ -76,6 +77,9 @@ class StartChartManage {
|
||||
String relayPeerId = ''; // 中继peerId
|
||||
bool _calling = false; // 是否处于通话中
|
||||
|
||||
// 获取 StartChartTalkStatus 的唯一实例
|
||||
StartChartTalkStatus talkStatus = StartChartTalkStatus.instance;
|
||||
|
||||
// 星图服务初始化
|
||||
Future<void> init() async {
|
||||
if (isOnlineStartChartServer && _udpSocket != null) {
|
||||
@ -170,6 +174,7 @@ class StartChartManage {
|
||||
reportInformationData: data,
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
talkStatus.setInitializationCompleted();
|
||||
// 发送心跳消息
|
||||
_sendHeartbeatMessage();
|
||||
// 发送送上线消息
|
||||
|
||||
100
lib/talk/startChart/start_chart_talk_status.dart
Normal file
100
lib/talk/startChart/start_chart_talk_status.dart
Normal file
@ -0,0 +1,100 @@
|
||||
// 定义视频对讲的状态枚举
|
||||
enum TalkStatus {
|
||||
waitingAnswer, // 等待接听
|
||||
duringCall, // 通话中
|
||||
rejected, // 被拒绝
|
||||
uninitialized, // 未初始化
|
||||
initializationCompleted, // 初始化完成
|
||||
notTalkData, // 暂无通话数据
|
||||
notTalkPing, // 暂无通话保持
|
||||
error, // 错误状态
|
||||
}
|
||||
|
||||
class StartChartTalkStatus {
|
||||
// 私有字段,用于存储当前状态
|
||||
TalkStatus _status = TalkStatus.uninitialized;
|
||||
|
||||
// 私有化默认构造函数,防止外部创建实例
|
||||
StartChartTalkStatus._(
|
||||
{TalkStatus initialStatus = TalkStatus.uninitialized}) {
|
||||
_status = initialStatus;
|
||||
}
|
||||
|
||||
// 静态私有字段,存储唯一的实例
|
||||
static final StartChartTalkStatus _instance = StartChartTalkStatus._();
|
||||
|
||||
// 静态工厂构造函数,返回唯一的实例
|
||||
static StartChartTalkStatus get instance => _instance;
|
||||
|
||||
// 获取当前状态的 getter 方法
|
||||
TalkStatus get status => _status;
|
||||
|
||||
// 通用的 set 方法(仍然保留)
|
||||
set status(TalkStatus newStatus) {
|
||||
_setStatus(newStatus);
|
||||
}
|
||||
|
||||
// 内部方法,用于更新状态并触发状态变化事件
|
||||
void _setStatus(TalkStatus newStatus) {
|
||||
if (_status == newStatus) return; // 如果状态没有变化,直接返回
|
||||
// 更新状态
|
||||
_status = newStatus;
|
||||
|
||||
// 触发状态变化的事件或执行其他操作
|
||||
_onStatusChanged(newStatus);
|
||||
}
|
||||
|
||||
// 状态变化时的回调方法(可选)
|
||||
void _onStatusChanged(TalkStatus newStatus) {
|
||||
// 例如,可以在这里发送通知、更新 UI 或记录日志
|
||||
print("对讲状态变化: ${_status.name} -> ${newStatus.name}");
|
||||
}
|
||||
|
||||
/// 设置状态为等待接听
|
||||
void setWaitingAnswer() {
|
||||
_setStatus(TalkStatus.waitingAnswer);
|
||||
// 可以在这里添加特定于 "waitingAnswer" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为通话中
|
||||
void setDuringCall() {
|
||||
_setStatus(TalkStatus.duringCall);
|
||||
// 可以在这里添加特定于 "duringCall" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为被拒绝
|
||||
void setRejected() {
|
||||
_setStatus(TalkStatus.rejected);
|
||||
// 可以在这里添加特定于 "rejected" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为未初始化
|
||||
void setUninitialized() {
|
||||
_setStatus(TalkStatus.uninitialized);
|
||||
// 可以在这里添加特定于 "uninitialized" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为初始化完成
|
||||
void setInitializationCompleted() {
|
||||
_setStatus(TalkStatus.initializationCompleted);
|
||||
// 可以为 "initializationCompleted" 状态添加特定的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为暂无通话数据
|
||||
void setNotTalkData() {
|
||||
_setStatus(TalkStatus.notTalkData);
|
||||
// 可以在这里添加特定于 "notTalkData" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为暂无通话保持
|
||||
void setNotTalkPing() {
|
||||
_setStatus(TalkStatus.notTalkPing);
|
||||
// 可以在这里添加特定于 "notTalkPing" 状态的逻辑
|
||||
}
|
||||
|
||||
/// 设置状态为错误
|
||||
void setError() {
|
||||
_setStatus(TalkStatus.error);
|
||||
// 可以在这里添加特定于 "error" 状态的逻辑
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user