summaryrefslogtreecommitdiff
path: root/lib/device_scan_select.dart
diff options
context:
space:
mode:
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: () => "");
+}