diff options
author | uvok | 2025-07-31 14:12:03 +0200 |
---|---|---|
committer | uvok | 2025-07-31 14:12:03 +0200 |
commit | 67cfa2dc089cfd302570d4b570e0c88cc7d2a087 (patch) | |
tree | 743c9d869bbe3a95eea84d2c85181f186cf5c331 | |
parent | 765fcdfa7e932725a2a8f1b5b0b5b72f2d1ab69b (diff) |
Add availability stream
-rw-r--r-- | lib/control/mock_scanner_controller.dart | 4 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/control/mock_scanner_controller.dart b/lib/control/mock_scanner_controller.dart index 3141abc..8e95e29 100644 --- a/lib/control/mock_scanner_controller.dart +++ b/lib/control/mock_scanner_controller.dart @@ -14,6 +14,10 @@ class MockScannerController extends ScannerControllerImpl { bool _isScanning = false; + MockScannerController() { + super.setAvailability(ScanAvailability.available); + } + @override Future<void> startScan({ Duration timeout = const Duration(seconds: 2), diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index e60aec3..ac1c28c 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -12,6 +12,8 @@ abstract class ScannerControllerImpl extends ScannerController { final StreamController<ScanAvailability> _availabilityStreamController = StreamController<ScanAvailability>.broadcast(); + ScanAvailability? _latestAvailability; + @override Stream<ScanStatus> get statusStream => _scanStatusController.stream; @@ -22,6 +24,15 @@ abstract class ScannerControllerImpl extends ScannerController { Stream<ScanAvailability> get availabilityStream => _availabilityStreamController.stream; + ScannerControllerImpl() { + // fucking broadcast streams not even caching one value... + _availabilityStreamController.onListen = () { + if (_latestAvailability != null) { + _availabilityStreamController.add(_latestAvailability!); + } + }; + } + @protected void setStatus(ScanStatus newStatus) { if (_scanStatusController.isClosed) return; @@ -39,6 +50,7 @@ abstract class ScannerControllerImpl extends ScannerController { @protected void setAvailability(ScanAvailability available) { _availabilityStreamController.add(available); + _latestAvailability = available; } @override |