dispose method
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;
}
}