diff options
author | uvok | 2025-07-22 16:56:25 +0200 |
---|---|---|
committer | uvok | 2025-07-22 16:56:25 +0200 |
commit | 69e0259b8b3059822d40a1ed7ab349a646786bb8 (patch) | |
tree | 289d4656a18cc515fe544162dca7f6e730e295f8 | |
parent | a94649aa974298538b3d9ecf0028f68ae5bdca4e (diff) |
Add device scan list
-rw-r--r-- | lib/device_scan_select.dart | 45 |
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, + ), + ); + } +} |