dispose method

  1. @override
Future<bool> dispose()
override

Implementation

@override
Future<bool> dispose() async {
  _cancelWarmInFlight();

  try {
    _trackingTimer?.cancel();

    await _warmedOnceCtl.close();
    await _gazeController.close();
    await _stateController.close();
    await _eyeStateController.close();
    await _headPoseController.close();
    await _faceDetectionController.close();

    if (_onVisJs != null) {
      document.removeEventListener('visibilitychange', _onVisJs!);
    }
    if (_onFocusJs != null) {
      window.removeEventListener('focus', _onFocusJs!);
    }
    if (_onBlurJs != null) {
      window.removeEventListener('blur', _onBlurJs!);
    }
    if (_onPointerEnterJs != null) {
      document.removeEventListener(
          'pointerenter', _onPointerEnterJs!);
    }
    if (_onPointerLeaveJs != null) {
      document.removeEventListener(
          'pointerleave', _onPointerLeaveJs!);
    }
    if (_onMouseEnterJs != null) {
      document.removeEventListener('mouseenter', _onMouseEnterJs!);
    }
    if (_onMouseLeaveJs != null) {
      document.removeEventListener('mouseleave', _onMouseLeaveJs!);
    }

    // Stop WebGazer
    if (_webGazerStarted && _hasWebGazerProperty()) {
      try {
        _callWebGazerMethod('end');
      } catch (e) {
        _evalJS('webgazer.end()');
      }
    }

    return true;
  } catch (e) {
    return false;
  }
}