diff options
author | uvok | 2025-07-22 17:01:04 +0200 |
---|---|---|
committer | uvok | 2025-07-22 17:01:04 +0200 |
commit | f607bcb9948545c860b988e9d0405743b02b4266 (patch) | |
tree | 43de643fa7a310183cf2de098860d805e216a836 /lib/device_scan_select.dart | |
parent | c1e2cee9b109650c0f763ddcdf688a46b40563bb (diff) |
Make widget prettier
Diffstat (limited to 'lib/device_scan_select.dart')
-rw-r--r-- | lib/device_scan_select.dart | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/lib/device_scan_select.dart b/lib/device_scan_select.dart index a44bf4f..27b7492 100644 --- a/lib/device_scan_select.dart +++ b/lib/device_scan_select.dart @@ -24,22 +24,45 @@ class DeviceScanSelection extends NotifyingListWidget<ScanResult> { } class _DeviceScanSelectionState extends State<DeviceScanSelection> { + int selectedResult = -1; + @override Widget build(BuildContext context) { return Expanded( child: ListView.separated( - itemBuilder: (c, idx) { - final ScanResult item = widget.items[idx]; + itemCount: widget.items.length, + itemBuilder: (context, index) { + if (index >= widget.items.length) return null; + final ScanResult result = widget.items[index]; + final String name = firstGiven([ + result.device.advName, + result.device.platformName, + "<Unknown>", + ]); + return ListTile( - title: Text(item.toString()), + title: Text(name), + subtitle: Text(result.device.remoteId.str), + trailing: Text('RSSI: ${result.rssi}'), + selectedTileColor: Colors.amber, + selectedColor: Colors.black, onTap: () { - widget.onItemSelected(item); + setState(() { + selectedResult = index; + }); + widget.onItemSelected(result); }, + selected: selectedResult == index, ); }, - separatorBuilder: (c, i) => Divider(), - itemCount: widget.items.length, + separatorBuilder: (BuildContext context, int index) { + return Divider(); + }, ), ); } } + +String firstGiven(List<String> list) { + return list.firstWhere((s) => s.isNotEmpty, orElse: () => ""); +} |