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, +      ), +    ); +  } +} | 
