diff options
Diffstat (limited to 'lib')
-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, + ), + ); + } +} |