import 'dart:async'; 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 BehaviorSubject _scanStatusController = BehaviorSubject(); final BehaviorSubject> _deviceContoller = BehaviorSubject>(); final BehaviorSubject _availabilityController = BehaviorSubject(); @override Stream get statusStream => _scanStatusController.stream; @override Stream> get scanResultsStream => _deviceContoller.stream; @override Stream get availabilityStream => _availabilityController.stream; @protected void setStatus(ScanStatus newStatus) { if (_scanStatusController.isClosed) return; _scanStatusController.add(newStatus); } @protected void setDevices(List devices) { if (_deviceContoller.isClosed) return; _deviceContoller.add(devices); } @protected void setAvailability(ScanAvailability available) { _availabilityController.add(available); } @override void dispose() { _scanStatusController.close(); _deviceContoller.close(); _availabilityController.close(); } }