From ac912d76d66e35008c48bce811f822b353141eb4 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 31 Jul 2025 14:47:26 +0200 Subject: Use behaviorSubject --- lib/control/scanner_controller_impl.dart | 32 +++++++++++--------------------- 1 file 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 _scanStatusController = - StreamController.broadcast(); - final StreamController> _deviceContoller = - StreamController>.broadcast(); - final StreamController _availabilityStreamController = - StreamController.broadcast(); - - ScanAvailability? _latestAvailability; + final BehaviorSubject _scanStatusController = + BehaviorSubject(); + final BehaviorSubject> _deviceContoller = + BehaviorSubject>(); + final BehaviorSubject _availabilityController = + BehaviorSubject(); @override Stream get statusStream => _scanStatusController.stream; @@ -22,16 +22,7 @@ abstract class ScannerControllerImpl extends ScannerController { @override Stream 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(); } } -- cgit v1.2.3