summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-22 16:56:25 +0200
committeruvok2025-07-22 16:56:25 +0200
commit69e0259b8b3059822d40a1ed7ab349a646786bb8 (patch)
tree289d4656a18cc515fe544162dca7f6e730e295f8
parenta94649aa974298538b3d9ecf0028f68ae5bdca4e (diff)
Add device scan list
-rw-r--r--lib/device_scan_select.dart45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/device_scan_select.dart b/lib/device_scan_select.dart
new file mode 100644
index 0000000..a44bf4f
--- /dev/null
+++ b/lib/device_scan_select.dart
@@ -0,0 +1,45 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_blue_plus/flutter_blue_plus.dart';
+
+abstract class NotifyingListWidget<T> extends StatefulWidget {
+ final List<T> items;
+ final ValueChanged<T?> onItemSelected;
+
+ const NotifyingListWidget({
+ super.key,
+ required this.items,
+ required this.onItemSelected,
+ });
+}
+
+class DeviceScanSelection extends NotifyingListWidget<ScanResult> {
+ const DeviceScanSelection({
+ super.key,
+ required super.items,
+ required super.onItemSelected,
+ });
+
+ @override
+ State<DeviceScanSelection> createState() => _DeviceScanSelectionState();
+}
+
+class _DeviceScanSelectionState extends State<DeviceScanSelection> {
+ @override
+ Widget build(BuildContext context) {
+ return Expanded(
+ child: ListView.separated(
+ itemBuilder: (c, idx) {
+ final ScanResult item = widget.items[idx];
+ return ListTile(
+ title: Text(item.toString()),
+ onTap: () {
+ widget.onItemSelected(item);
+ },
+ );
+ },
+ separatorBuilder: (c, i) => Divider(),
+ itemCount: widget.items.length,
+ ),
+ );
+ }
+}