import 'dart:async'; import 'package:star_lock/blue/io_tool/manager_event_bus.dart'; import 'package:star_lock/talk/starChart/constant/talk_status.dart'; class StartChartTalkStatus { // 私有字段,用于存储当前状态 TalkStatus _status = TalkStatus.uninitialized; // 私有化默认构造函数,防止外部创建实例 StartChartTalkStatus._(); // 静态私有字段,存储唯一的实例 static final StartChartTalkStatus _instance = StartChartTalkStatus._(); // 提供一个静态方法来获取单例实例 static StartChartTalkStatus get instance => _instance; // 创建一个 StreamController 用于状态变化 final StreamController _statusStreamController = StreamController.broadcast(); // 提供一个方法来获取 Stream Stream get statusStream => _statusStreamController.stream; // 获取当前状态的 getter 方法 TalkStatus get status => _status; // 内部方法,用于更新状态并触发状态变化事件 void _setStatus(TalkStatus newStatus) { if (_status == newStatus) return; // 如果状态没有变化,直接返回 print("对讲状态变化: ${_status} -> ${newStatus}"); // 更新状态 _status = newStatus; // 触发状态变化事件 _statusStreamController.add(_status); } // 提供状态设置方法 void setPassiveCallWaitingAnswer() => _setStatus(TalkStatus.passiveCallWaitingAnswer); void setProactivelyCallWaitingAnswer() => _setStatus(TalkStatus.proactivelyCallWaitingAnswer); void setWaitingData() => _setStatus(TalkStatus.waitingData); // void setDuringCall() => _setStatus(TalkStatus.duringCall); void setRejected() => _setStatus(TalkStatus.rejected); void setUninitialized() => _setStatus(TalkStatus.uninitialized); void setInitializationCompleted() => _setStatus(TalkStatus.initializationCompleted); void setNotTalkData() => _setStatus(TalkStatus.notTalkData); void setNotTalkPing() => _setStatus(TalkStatus.notTalkPing); void setError() => _setStatus(TalkStatus.error); void setHangingUpDuring() => _setStatus(TalkStatus.hangingUpDuring); void setAnsweredSuccessfully() => _setStatus(TalkStatus.answeredSuccessfully); void setEnd() => _setStatus(TalkStatus.end); // 提供一个方法来关闭 StreamController void dispose() { _statusStreamController.close(); } }