diff --git a/lib/talk/startChart/events/talk_status_change_event.dart b/lib/talk/startChart/events/talk_status_change_event.dart new file mode 100644 index 00000000..aea113c2 --- /dev/null +++ b/lib/talk/startChart/events/talk_status_change_event.dart @@ -0,0 +1,13 @@ +import 'package:star_lock/talk/startChart/start_chart_talk_status.dart'; + +class TalkStatusChangeEvent { + final TalkStatus oldStatus; + final TalkStatus newStatus; + + TalkStatusChangeEvent(this.oldStatus, this.newStatus); + + @override + String toString() { + return "TalkStatusChangeEvent: ${oldStatus.name} -> ${newStatus.name}"; + } +} diff --git a/lib/talk/startChart/handle/scp_message_base_handle.dart b/lib/talk/startChart/handle/scp_message_base_handle.dart index 6274332b..5575ebcd 100644 --- a/lib/talk/startChart/handle/scp_message_base_handle.dart +++ b/lib/talk/startChart/handle/scp_message_base_handle.dart @@ -8,6 +8,7 @@ import 'package:star_lock/talk/startChart/handle/other/overtime_timer_manger.dar import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; import 'package:star_lock/talk/startChart/start_chart_manage.dart'; +import 'package:star_lock/talk/startChart/start_chart_talk_status.dart'; class ScpMessageBaseHandle { final startChartManage = StartChartManage(); @@ -25,6 +26,10 @@ class ScpMessageBaseHandle { ); + // 获取 StartChartTalkStatus 的唯一实例 + StartChartTalkStatus talkStatus = StartChartTalkStatus.instance; + + bool checkGenericRespSuccess(GenericResp genericResp) { if (genericResp == null) return false; diff --git a/lib/talk/startChart/start_chart_talk_status.dart b/lib/talk/startChart/start_chart_talk_status.dart index cfa9c8d3..da24b46c 100644 --- a/lib/talk/startChart/start_chart_talk_status.dart +++ b/lib/talk/startChart/start_chart_talk_status.dart @@ -1,4 +1,7 @@ // 定义视频对讲的状态枚举 +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, // 等待接听 duringCall, // 通话中 @@ -48,6 +51,8 @@ class StartChartTalkStatus { void _onStatusChanged(TalkStatus newStatus) { // 例如,可以在这里发送通知、更新 UI 或记录日志 print("对讲状态变化: ${_status.name} -> ${newStatus.name}"); + // 发布状态变化事件 + EventBusManager().eventBus!.fire(TalkStatusChangeEvent(_status, newStatus)); } /// 设置状态为等待接听