willHandleClassEnd method
判断是否应由 ClassSwitcher 接管此次 classEnd。
同时满足以下条件才接管(角色无关,老师/助教/学生/督学均生效):
- 已绑定 env
- nextClassId 非空、非空串、且不等于 currentClassId
- 状态机处于 idle(防并发)
切换完成后,新课堂的角色由 _joinNewClass 内部的 classInfo 刷新 +
getRole() 重新判定,UI 会按新角色 rebuild。
Implementation
bool willHandleClassEnd() {
final env = _env;
if (env == null) return false;
if (!env.classSwitchEnabled()) return false;
final next = env.nextClassId()?.trim();
if (next == null || next.isEmpty) return false;
if (next == env.currentClassId().trim()) return false;
if (status.value.state != SwitchState.idle) return false;
return true;
}