willHandleClassEnd method

bool willHandleClassEnd()

判断是否应由 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;
}