113 lines
3.3 KiB
Dart
113 lines
3.3 KiB
Dart
// 定义视频对讲的状态枚举
|
|
import 'package:star_lock/blue/io_tool/manager_event_bus.dart';
|
|
import 'package:star_lock/talk/startChart/events/talk_status_change_event.dart';
|
|
|
|
enum TalkStatus {
|
|
waitingAnswer, // 等待接听
|
|
waitingData, // 等待数据
|
|
duringCall, // 通话中
|
|
rejected, // 被拒绝
|
|
uninitialized, // 未初始化
|
|
initializationCompleted, // 初始化完成
|
|
notTalkData, // 暂无通话数据
|
|
notTalkPing, // 暂无通话保持
|
|
error, // 错误状态
|
|
end, // 结束
|
|
}
|
|
|
|
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; // 如果状态没有变化,直接返回
|
|
print("对讲状态变化: ${_status.name} -> ${newStatus.name}");
|
|
// 更新状态
|
|
_status = newStatus;
|
|
|
|
// 触发状态变化的事件或执行其他操作
|
|
_onStatusChanged(newStatus);
|
|
}
|
|
|
|
// 状态变化时的回调方法(可选)
|
|
void _onStatusChanged(TalkStatus newStatus) {
|
|
// 发布状态变化事件
|
|
EventBusManager().eventBus!.fire(TalkStatusChangeEvent(_status, newStatus));
|
|
}
|
|
|
|
/// 设置状态为等待接听
|
|
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" 状态的逻辑
|
|
}
|
|
|
|
/// 设置状态为结束
|
|
void setEnd() {
|
|
_setStatus(TalkStatus.end);
|
|
// 可以在这里添加特定于 "end" 状态的逻辑
|
|
}
|
|
}
|