diff options
Diffstat (limited to 'lib/control')
-rw-r--r-- | lib/control/flutter_blue_plus_scanner_controller.dart | 10 | ||||
-rw-r--r-- | lib/control/mock_scanner_controller.dart | 12 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 21 |
3 files changed, 24 insertions, 19 deletions
diff --git a/lib/control/flutter_blue_plus_scanner_controller.dart b/lib/control/flutter_blue_plus_scanner_controller.dart index b859129..fc570b2 100644 --- a/lib/control/flutter_blue_plus_scanner_controller.dart +++ b/lib/control/flutter_blue_plus_scanner_controller.dart @@ -9,12 +9,6 @@ import 'package:logger/logger.dart'; var logger = Logger(); class FlutterBluePlusScannerController extends ScannerControllerImpl { - final StreamController<List<Device>> _scanResultsController = - StreamController<List<Device>>.broadcast(); - - @override - Stream<List<Device>> get scanResultsStream => _scanResultsController.stream; - @override Future<void> startScan({ Duration timeout = const Duration(seconds: 5), @@ -33,7 +27,7 @@ class FlutterBluePlusScannerController extends ScannerControllerImpl { List<Device> devices = results .map((d) => FlutterBluePlusDevice.fromScan(d)) .toList(); - _scanResultsController.add(devices); + super.setDevices(devices); }, onError: (err) { logger.e(err); @@ -57,7 +51,7 @@ class FlutterBluePlusScannerController extends ScannerControllerImpl { @override void dispose() { stopScan().ignore(); - _scanResultsController.close(); + super.dispose(); } List<ScanResult> _scanResults = []; diff --git a/lib/control/mock_scanner_controller.dart b/lib/control/mock_scanner_controller.dart index b210c0a..ec893cd 100644 --- a/lib/control/mock_scanner_controller.dart +++ b/lib/control/mock_scanner_controller.dart @@ -13,14 +13,6 @@ class MockScannerController extends ScannerControllerImpl { MockDevice(3, "Fourth"), ]; - @override - void dispose() {} - - @override - Stream<List<Device>> get scanResultsStream => _deviceContoller.stream; - final StreamController<List<Device>> _deviceContoller = - StreamController<List<Device>>.broadcast(); - bool _isScanning = false; @override @@ -33,9 +25,7 @@ class MockScannerController extends ScannerControllerImpl { for (int i = 0; i < fakedDevices.length && _isScanning; i++) { await Future.delayed(Duration(milliseconds: 300)); - _deviceContoller.add( - fakedDevices.getRange(0, i + 1).toList(growable: false), - ); + super.setDevices(fakedDevices.getRange(0, i + 1).toList(growable: false)); } _isScanning = false; diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index b0a7f79..7033542 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -1,17 +1,38 @@ import 'dart:async'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:meta/meta.dart'; +import 'package:uvok_epaper_badge/model/device.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(); @override Stream<ScanStatus> get statusStream => _scanStatusController.stream; + @override + Stream<List<Device>> get scanResultsStream => _deviceContoller.stream; + @protected void setStatus(ScanStatus newStatus) { + if (_scanStatusController.isClosed) return; + _scanStatusController.add(newStatus); } + + @protected + void setDevices(List<Device> devices) { + if (_deviceContoller.isClosed) return; + + _deviceContoller.add(devices); + } + + @override + void dispose() { + _scanStatusController.close(); + _deviceContoller.close(); + } } |