优化了老师端的等待状态判断逻辑

This commit is contained in:
zhutao
2025-11-23 22:09:39 +08:00
parent 5784a0a5d4
commit 4ecb0c35d6
8 changed files with 276 additions and 67 deletions

View File

@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:app/request/dto/room/room_info_dto.dart';
import 'package:app/request/dto/room/room_type_dto.dart';
import 'package:app/request/dto/room/room_user_dto.dart';
import 'package:app/request/dto/room/rtc_token_dto.dart';
import 'package:app/request/websocket/room_protocol.dart';
@@ -11,7 +12,10 @@ import 'package:flutter/cupertino.dart';
import 'type.dart';
class TchRoomVM extends ChangeNotifier {
TchRoomVM({required this.roomInfo, String? start}) {
TchRoomVM({
required this.roomInfo,
String? start,
}) {
_startRoom();
}
@@ -20,6 +24,7 @@ class TchRoomVM extends ChangeNotifier {
///房间的基础信息
final RoomInfoDto roomInfo;
int roomStatus = -1; // //-1加载中0没开始1进行中2关闭
///老师选中的学生id
int activeSId = 0;
@@ -37,7 +42,8 @@ class TchRoomVM extends ChangeNotifier {
///websocket管理
final RoomWebSocket _ws = RoomWebSocket();
bool wsConnected = false; // socket连接状态
// bool wsConnected = false; // socket连接状态
StreamSubscription<RoomMessage>? _sub;
RtcTokenDto? get rtcToken => _ws.rtcToken;
@@ -50,12 +56,13 @@ class TchRoomVM extends ChangeNotifier {
}
//启动连接
await _ws.connect();
wsConnected = true;
//监听各种ws事件
_sub = _ws.stream.listen((msg) {
// 自习室人员变化
if (msg.event == RoomEvent.changeUser) {
final list = RoomUserDto.listFromJson(msg.data['user_list']);
final room = RoomTypeDto.fromJson(msg.data['room_info']);
roomStatus = room.roomStatus;
onStudentChange(list);
} else if ([
RoomEvent.openSpeaker,