diff options
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index ac1c28c..dbf5e00 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -3,16 +3,16 @@ import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:meta/meta.dart'; import 'package:uvok_epaper_badge/model/device/device.dart'; +import 'package:rxdart/rxdart.dart'; + /// Helper class which provides the setStatus method. abstract class ScannerControllerImpl extends ScannerController { - final StreamController<ScanStatus> _scanStatusController = - StreamController<ScanStatus>.broadcast(); - final StreamController<List<Device>> _deviceContoller = - StreamController<List<Device>>.broadcast(); - final StreamController<ScanAvailability> _availabilityStreamController = - StreamController<ScanAvailability>.broadcast(); - - ScanAvailability? _latestAvailability; + final BehaviorSubject<ScanStatus> _scanStatusController = + BehaviorSubject<ScanStatus>(); + final BehaviorSubject<List<Device>> _deviceContoller = + BehaviorSubject<List<Device>>(); + final BehaviorSubject<ScanAvailability> _availabilityController = + BehaviorSubject<ScanAvailability>(); @override Stream<ScanStatus> get statusStream => _scanStatusController.stream; @@ -22,16 +22,7 @@ abstract class ScannerControllerImpl extends ScannerController { @override Stream<ScanAvailability> get availabilityStream => - _availabilityStreamController.stream; - - ScannerControllerImpl() { - // fucking broadcast streams not even caching one value... - _availabilityStreamController.onListen = () { - if (_latestAvailability != null) { - _availabilityStreamController.add(_latestAvailability!); - } - }; - } + _availabilityController.stream; @protected void setStatus(ScanStatus newStatus) { @@ -49,14 +40,13 @@ abstract class ScannerControllerImpl extends ScannerController { @protected void setAvailability(ScanAvailability available) { - _availabilityStreamController.add(available); - _latestAvailability = available; + _availabilityController.add(available); } @override void dispose() { _scanStatusController.close(); _deviceContoller.close(); - _availabilityStreamController.close(); + _availabilityController.close(); } } |