diff options
author | uvok | 2025-07-29 19:34:30 +0200 |
---|---|---|
committer | uvok | 2025-07-29 19:34:30 +0200 |
commit | 9536bfa04db171aee987f042dccc4c2f16fa0f29 (patch) | |
tree | 30be128d055edafb9ba2791438552a2a8998ae2a | |
parent | 3e16a18fb5d279575377ae5cf1d3929a90cae79c (diff) |
Add "controllers" for scanning
-rw-r--r-- | lib/control/scanner_controller.dart | 16 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 17 | ||||
-rw-r--r-- | lib/model/device.dart | 6 | ||||
-rw-r--r-- | pubspec.lock | 2 | ||||
-rw-r--r-- | pubspec.yaml | 1 |
5 files changed, 41 insertions, 1 deletions
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<List<Device>> get scanResultsStream; + Stream<ScanStatus> get statusStream; + Future<void> startScan({Duration timeout}); + Future<void> 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<ScanStatus> _scanStatusController = + StreamController<ScanStatus>.broadcast(); + + @override + Stream<ScanStatus> get statusStream => _scanStatusController.stream; + + @protected + void setStatus(ScanStatus newStatus) { + _scanStatusController.add(newStatus); + } +} diff --git a/lib/model/device.dart b/lib/model/device.dart new file mode 100644 index 0000000..98445fa --- /dev/null +++ b/lib/model/device.dart @@ -0,0 +1,6 @@ +/// Represents a (badge) device to be connected to. +abstract class Device { + String? get name; + String? get address; + int? get rssi; +} diff --git a/pubspec.lock b/pubspec.lock index 00d4db2..4cbc2d8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -217,7 +217,7 @@ packages: source: hosted version: "0.11.1" meta: - dependency: transitive + dependency: "direct main" description: name: meta sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c diff --git a/pubspec.yaml b/pubspec.yaml index 7ea1ed6..c843b73 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: flutter_blue_plus: ^1.35.5 permission_handler: ^12.0.1 logger: ^2.6.1 + meta: ^1.16.0 dev_dependencies: flutter_test: |