diff options
Diffstat (limited to 'lib')
-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 |