summaryrefslogtreecommitdiff
path: root/lib/device_scan_select.dart
diff options
context:
space:
mode:
authoruvok2025-07-22 17:01:04 +0200
committeruvok2025-07-22 17:01:04 +0200
commitf607bcb9948545c860b988e9d0405743b02b4266 (patch)
tree43de643fa7a310183cf2de098860d805e216a836 /lib/device_scan_select.dart
parentc1e2cee9b109650c0f763ddcdf688a46b40563bb (diff)
Make widget prettier
Diffstat (limited to 'lib/device_scan_select.dart')
-rw-r--r--lib/device_scan_select.dart35
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: () => "");
+}