findDeviceByName static method
Convenience method to scan and find a specific device by name
deviceName
- Name of the device to find
timeout
- Maximum time to scan (defaults to 10 seconds)
Returns the first device found with the matching name, or null if not found
Implementation
static Future<BleDevice?> findDeviceByName(String deviceName,
{Duration timeout = const Duration(seconds: 10)}) async {
final completer = Completer<BleDevice?>();
StreamSubscription<ScanEvent>? subscription;
Timer? timeoutTimer;
// Set up timeout
timeoutTimer = Timer(timeout, () {
subscription?.cancel();
if (!completer.isCompleted) {
completer.complete(null);
}
stopScan();
});
// Start scanning and listen for the device
subscription = startScan(timeout: timeout).listen((event) {
if (event.device.name == deviceName) {
timeoutTimer?.cancel();
subscription?.cancel();
stopScan();
if (!completer.isCompleted) {
completer.complete(event.device);
}
}
});
return completer.future;
}