receiveBroadcastStream method
Stream
receiveBroadcastStream(
[ - dynamic arguments
])
Implementation
Stream<dynamic> receiveBroadcastStream([dynamic arguments]) {
final MethodChannel methodChannel = new MethodChannel(name, codec);
final id = ++_lastId;
final handlerName = '$name#$id';
late StreamController<dynamic> controller;
controller = new StreamController<dynamic>.broadcast(onListen: () async {
ServicesBinding.instance!.defaultBinaryMessenger
.setMessageHandler(handlerName, (ByteData? reply) async {
if (reply == null) {
controller.close();
} else {
try {
controller.add(codec.decodeEnvelope(reply));
} on PlatformException catch (e) {
controller.addError(e);
}
}
return reply;
});
try {
await methodChannel.invokeMethod('listen#$id', arguments);
} catch (exception, stack) {
FlutterError.reportError(new FlutterErrorDetails(
exception: exception,
stack: stack,
library: 'streams_channel2',
context: DiagnosticsNode.message(
'while activating platform stream on channel $name'),
));
}
}, onCancel: () async {
ServicesBinding.instance!.defaultBinaryMessenger
.setMessageHandler(handlerName, null);
try {
await methodChannel.invokeMethod('cancel#$id', arguments);
} catch (exception, stack) {
FlutterError.reportError(new FlutterErrorDetails(
exception: exception,
stack: stack,
library: 'streams_channel2',
context: DiagnosticsNode.message(
'while de-activating platform stream on channel $name'),
));
}
});
return controller.stream;
}