diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/control/universal_ble_scanner_controller.dart | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/control/universal_ble_scanner_controller.dart b/lib/control/universal_ble_scanner_controller.dart index dd447bd..b91337f 100644 --- a/lib/control/universal_ble_scanner_controller.dart +++ b/lib/control/universal_ble_scanner_controller.dart @@ -9,13 +9,15 @@ import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart'; Logger logger = Logger(); class UniversalBleScannerController extends ScannerControllerImpl { - StreamSubscription<BleDevice>? _subscription; + StreamSubscription<BleDevice>? _subScan; + StreamSubscription<AvailabilityState>? _subAvail; final List<BleDevice> _devices = []; UniversalBleScannerController() { // fuck this limitation, I want an instance method to be called, which doesn't // work in an initializer. - _subscription = UniversalBle.scanStream.listen(_newDeviceAction); + _subScan = UniversalBle.scanStream.listen(_newDeviceAction); + _subAvail = UniversalBle.availabilityStream.listen(_newAvailabilityAction); } void _newDeviceAction(BleDevice dev) { @@ -30,6 +32,14 @@ class UniversalBleScannerController extends ScannerControllerImpl { } } + void _newAvailabilityAction(AvailabilityState event) { + super.setAvailability( + event == AvailabilityState.poweredOn + ? ScanAvailability.available + : ScanAvailability.unavailable, + ); + } + @override Future<void> startScan({ Duration timeout = const Duration(seconds: 5), @@ -59,7 +69,8 @@ class UniversalBleScannerController extends ScannerControllerImpl { void dispose() { super.dispose(); stopScan().ignore(); - _subscription?.cancel(); + _subScan?.cancel().ignore(); + _subAvail?.cancel().ignore(); } } |