streamBleReceivedData method
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!;
}