dispose method

Future<void> dispose()

Implementation

Future<void> dispose() async {
  if (_isDisposed) {
    log('⚠️ Ya se llamó dispose anteriormente');
    return;
  }

  log('🗑️ Iniciando dispose de RemoteControl...');
  _isDisposed = true;

  // 1. Cerrar WebSocket
  try {
    _channel?.sink.close();
    _isConnected = false;
    log('✅ WebSocket cerrado');
  } catch (e) {
    log('⚠️ Error cerrando WebSocket: $e');
  }

  // 2. Cerrar StreamController de forma segura
  try {
    if (_commandController != null && !_commandController!.isClosed) {
      await _commandController!.close();
      log('✅ StreamController cerrado');
    }
  } catch (e) {
    log('⚠️ Error cerrando StreamController: $e');
  }

  // 3. Detener captura de pantalla
  try {
    await stopScreenCapture();
    log('✅ Screen capture detenido');
  } catch (e) {
    log('⚠️ Error deteniendo screen capture: $e');
  }

  // Cancelar timer de inactividad
  _cancelInactivityTimer();

  log('✅ Dispose completado');
}