closeCamera method

Future<void> closeCamera(
  1. String from, {
  2. bool needUIDisabled = true,
  3. bool needToast = true,
})

Implementation

Future<void> closeCamera(String from, {bool needUIDisabled = true, bool needToast = true}) async {
  if (!_trtcStreamInfoObs.isCameraAvailable.value) {
    return;
  }
  if (needUIDisabled) {
    _trtcStreamInfoObs.updateSelfCameraDeviceDisabled(true);
  }
  await TRTC.closeCamera(from);
  final isCameraAvailable = _trtcStreamInfoObs.isCameraAvailable.value;
  var res = await networkService.selfStatusReport(StateReportBody(classId: _config.classId, state: isCameraAvailable ? StateStatusValueEnum.off : StateStatusValueEnum.fail, type: StateTypeEnum.camera));
  if (res?.errorCode == 0) {
    _membersInfoObs.updateSelfMemberInfoByAction(MemberActionType.cameraClose, isCameraAvailable ? StateStatusValueEnum.off : StateStatusValueEnum.fail);
    _trtcStreamInfoObs.updateTRTCStreamInfo(TRTCRoomInfo.fromJson({"userId": _config.userId, "userVideoAvailable": false}), TRTCStreamInfoUpdateType.userVideoAvailableChanged);
    TCICLog.info("关闭摄像头成功", actionModule: ActionModule.tcicController.name, actionName: ActionName.closeCamera.name);
    if (needToast) {
      TCICToast.show(StringEnum.closeCameraSuccess);
    }
  } else {
    TCICLog.error("关闭摄像头失败", actionModule: ActionModule.tcicController.name, actionName: ActionName.closeCamera.name);
    if (needToast) {
      TCICToast.show(StringEnum.closeCameraFailed);
    }
  }
  if (needUIDisabled) {
    _trtcStreamInfoObs.updateSelfCameraDeviceDisabled(false);
  }
}