From 6c76ca18db8c8774ed0a456e6623d24100587b9d Mon Sep 17 00:00:00 2001 From: TobiasRoeddiger Date: Mon, 5 Oct 2026 07:37:15 +0200 Subject: [PATCH] Release Android BLE clients when the Flutter engine closes --- example/pubspec.lock | 4 ++-- lib/src/managers/ble_manager.dart | 8 +++++++- pubspec.yaml | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index f13a885..cd02945 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -689,10 +689,10 @@ packages: dependency: transitive description: name: universal_ble - sha256: "8e5f4e2827375900b805fe3eb6cb8a305ade2303289d9a5cba0d09a3a37fea29" + sha256: bdebe7d4ff3a24f28b5e56c999104ea1584a9de55da4ee0b4c2346bcf8f8c528 url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.3.0" uuid: dependency: transitive description: diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index f5eeb75..d49f32c 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -298,7 +298,13 @@ class BleManager extends BleGattManager { }; try { - UniversalBle.connect(device.id); + UniversalBle.connect( + device.id, + platformConfig: ConnectionPlatformConfig( + // A new Flutter engine cannot receive the old GATT client's callbacks. + android: AndroidConnectionOptions(closeGattOnDetach: true), + ), + ); } catch (error, stack) { _connectCallbacks.remove(device.id); _disconnectCallbacks.remove(device.id); diff --git a/pubspec.yaml b/pubspec.yaml index f241ced..fa7dc5b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: typed_data: ^1.3.2 convert: ^3.1.1 permission_handler: ^12.0.1 - universal_ble: ^2.0.1 + universal_ble: ^2.3.0 logger: ^2.5.0 # for fota: equatable: ^2.0.5