addJavaScriptChannel method

  1. @override
Future<void> addJavaScriptChannel(
  1. JavaScriptChannelParams javaScriptChannelParams
)

Adds a new JavaScript channel to the set of enabled channels.

Implementation

@override
Future<void> addJavaScriptChannel(
    JavaScriptChannelParams javaScriptChannelParams) async {
  final String channelName = javaScriptChannelParams.name;

  if (_messageChannels.containsKey(channelName)) {
    throw new ArgumentError(
      'A JavaScriptChannel with name `$channelName` already exists.',
    );
  }

  final channel = new web.MessageChannel();

  channel.port1.onmessage = (web.MessageEvent e) {
    javaScriptChannelParams.onMessageReceived(
        new WebWebViewMessage(message: channelName, extraData: e.data));
  }.toJS;
  _connectMessageChannel(channel);
  _messageChannels[channelName] = channel;
}