diff --git a/lib/screens/usb_screen.dart b/lib/screens/usb_screen.dart index c99e10f..38a7c67 100644 --- a/lib/screens/usb_screen.dart +++ b/lib/screens/usb_screen.dart @@ -74,6 +74,13 @@ class _UsbScreenState extends State { @override void dispose() { _connector.removeListener(_connectionListener); + if (!_navigatedToContacts && + _connector.activeTransport == MeshCoreTransportType.usb && + _connector.state != MeshCoreConnectionState.disconnected) { + WidgetsBinding.instance.addPostFrameCallback((_) { + unawaited(_connector.disconnect(manual: true)); + }); + } super.dispose(); }