streamBleReceivedData method

  1. @override
Stream<BleReceivedData> streamBleReceivedData()
override

Provides a broadcast stream of BleReceivedData from connected BLE devices.

This stream emits data received via BLE characteristics (e.g., notifications or reads triggered by the native side). Being a broadcast stream, it supports multiple listeners simultaneously. Each listener will receive events emitted after it subscribes.

Returns a Stream of BleReceivedData.

Implementation

@override
Stream<BleReceivedData> streamBleReceivedData() {
  _bleReceivedDataStream ??= bleReceivedDataEventChannel
      .receiveBroadcastStream()
      .map((dynamic event) {
    if (event is Map) {
      try {
        return BleReceivedData.fromMap(Map.from(event));
      } catch (e) {
        debugPrint(
            "[MethodChannelFlutterP2pConnection] Error parsing BleReceivedData: $e, Event: $event");
        rethrow;
      }
    } else {
      debugPrint(
          "[MethodChannelFlutterP2pConnection] Received non-map event on bleReceivedDataEventChannel: $event");
      throw FormatException(
          "Received unexpected data type on bleReceivedDataEventChannel: ${event.runtimeType}");
    }
  }).asBroadcastStream();
  return _bleReceivedDataStream!;
}