From 27830b7bce9bdabc5ba46beab99389ecc96f3f92 Mon Sep 17 00:00:00 2001 From: uvok Date: Mon, 21 Jul 2025 17:55:48 +0200 Subject: handle listitem selection --- lib/main.dart | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/main.dart b/lib/main.dart index 86c82eb..fb4eaff 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -62,11 +62,13 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { final List scanResults = []; bool isScanning = false; + int selectedResult = -1; void _doScan() async { setState(() { scanResults.clear(); isScanning = true; + selectedResult = -1; }); var subscription = FlutterBluePlus.onScanResults.listen( onScanResult, @@ -171,15 +173,22 @@ class _MyHomePageState extends State { //itemCount: scanResults.length, itemBuilder: (context, index) { if (index >= scanResults.length) return null; - - final result = scanResults[index]; - final name = result.device.advName.isEmpty - ? Text("") - : Text(result.device.advName); + final ScanResult result = scanResults[index]; + final String name = result.device.advName.isEmpty + ? ("") + : (result.device.advName); return ListTile( - title: name, + title: Text(name), subtitle: Text(result.device.remoteId.str), trailing: Text('RSSI: ${result.rssi}'), + selectedTileColor: Colors.amber, + selectedColor: Colors.black, + onTap: () { + setState(() { + selectedResult = index; + }); + }, + selected: selectedResult == index, ); }, separatorBuilder: (BuildContext context, int index) { -- cgit v1.2.3