disconnect method
Disconnect with proper resource cleanup
Implementation
Future<NetworkPrintResult> disconnect({Duration? timeout}) async {
  try {
    if (_socket != null) {
      await _socket!.flush();
      await _socket!.close();
      _socket = null;
    }
    _isConnected = false;
    if (timeout != null) {
      await Future.delayed(timeout);
    }
    return NetworkPrintResult.success;
  } catch (e) {
    _isConnected = false;
    _socket = null;
    return NetworkPrintResult.success; // Still consider it successful cleanup
  }
}