From 9536bfa04db171aee987f042dccc4c2f16fa0f29 Mon Sep 17 00:00:00 2001 From: uvok Date: Tue, 29 Jul 2025 19:34:30 +0200 Subject: Add "controllers" for scanning --- lib/control/scanner_controller.dart | 16 ++++++++++++++++ lib/control/scanner_controller_impl.dart | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 lib/control/scanner_controller.dart create mode 100644 lib/control/scanner_controller_impl.dart (limited to 'lib/control') diff --git a/lib/control/scanner_controller.dart b/lib/control/scanner_controller.dart new file mode 100644 index 0000000..75711d6 --- /dev/null +++ b/lib/control/scanner_controller.dart @@ -0,0 +1,16 @@ +import 'dart:async'; + +import 'package:badge/model/device.dart'; + +/// Represents the scan status. +enum ScanStatus { idle, scanning, finished, error } + +/// Represents a scanner controller. +/// It emits devices which may be connected to later. +abstract class ScannerController { + Stream> get scanResultsStream; + Stream get statusStream; + Future startScan({Duration timeout}); + Future stopScan(); + void dispose(); +} diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart new file mode 100644 index 0000000..e39aa6b --- /dev/null +++ b/lib/control/scanner_controller_impl.dart @@ -0,0 +1,17 @@ +import 'dart:async'; +import 'package:badge/control/scanner_controller.dart'; +import 'package:meta/meta.dart'; + +/// Helper class which provides the setStatus method. +abstract class ScannerControllerImpl extends ScannerController { + final StreamController _scanStatusController = + StreamController.broadcast(); + + @override + Stream get statusStream => _scanStatusController.stream; + + @protected + void setStatus(ScanStatus newStatus) { + _scanStatusController.add(newStatus); + } +} -- cgit v1.2.3