scanForDevices method

  1. @override
Stream<UnprovisionedDevice> scanForDevices()
override

Implementation

@override
Stream<UnprovisionedDevice> scanForDevices() {
  _scanStreamController?.close();
  _scanStreamController = StreamController<UnprovisionedDevice>.broadcast(
    onCancel: () {
      stopScan();
    },
  );

  _scanEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event is Map) {
        try {
          final device = UnprovisionedDevice.fromMap(
            Map<String, dynamic>.from(event),
          );
          _scanStreamController?.add(device);
        } catch (e) {
          debugPrint('Error parsing scanned device: $e');
        }
      }
    },
    onError: (dynamic error) {
      debugPrint('Scan stream error: $error');
      _scanStreamController?.addError(error);
    },
    onDone: () {
      _scanStreamController?.close();
    },
  );

  return _scanStreamController!.stream;
}