summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-31 14:47:26 +0200
committeruvok2025-07-31 14:47:26 +0200
commitac912d76d66e35008c48bce811f822b353141eb4 (patch)
tree4f5cac69813400f409f1cfc27f1099b8cc98749b
parent58ccbf2cce80d18bb174a52307386ec67a31174a (diff)
Use behaviorSubject
-rw-r--r--lib/control/scanner_controller_impl.dart32
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();
}
}