findScannedDevices method

Future<List<ScanResult>> findScannedDevices({
  1. bool isFiltered = true,
})

Implementation

Future<List<ScanResult>> findScannedDevices({bool isFiltered = true}) async {
  await _requestPermission();

  final scanned = <ScanResult>[];
  Set<DeviceIdentifier> seen = {};

  final subscription = FlutterBluePlus.scanResults.listen((results) {
    for (final r in results) {
      if (!seen.contains(r.device.remoteId)) {
        seen.add(r.device.remoteId);
        scanned.add(r);
      }
    }
  });

  await FlutterBluePlus.startScan();

  await Future.delayed(const Duration(seconds: 2));

  await FlutterBluePlus.stopScan();
  subscription.cancel();

  if (isFiltered) {
    return scanned.where((r) => scanFilter(r.device)).toList();
  }
  return scanned;
}