app-starlock/lib/talk/starChart/status/star_chart_talk_status.dart

72 lines
2.3 KiB
Dart
Raw Normal View History

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