diff options
| -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: () => ""); +} | 
