startScan method

  1. @override
Future<void> startScan({
  1. required void onScanResult(
    1. BleDevice result
    ),
  2. void onScanStart(
    1. bool success
    )?,
  3. void onScanStop(
    1. bool success
    )?,
  4. String? macFilter,
  5. bool? allowDuplicates,
  6. int? timeout,
})
override

Implementation

@override
Future<void> startScan({
    required void Function(BleDevice result) onScanResult,
    void Function(bool success)? onScanStart,
    void Function(bool success)? onScanStop,
    String? macFilter,
    bool? allowDuplicates,
    int? timeout,
  }) async {
  dynamic brodcastStream;

  brodcastStream =
      _startScanEventChannel.receiveBroadcastStream().listen((result) {
        switch (result["event"]) {
          case "onScanResult":
            onScanResult(_mapScanResult(result["value"]));
            break;
          case "onScanStart":
            onScanStart?.call(result["value"] as bool);
            break;
          case "onScanStop":
                brodcastStream.cancel();
              onScanStop?.call(result["value"] as bool);
            break;
          default:
            return;
        }
  });

  return await _methodChannel.invokeMethod<void>('startScan', {
    'macFilter': macFilter,
    'allowDuplicates': allowDuplicates,
    'timeout': timeout
  });
}