InAppWebViewWebElement constructor

InAppWebViewWebElement({
  1. required dynamic viewId,
  2. required BinaryMessenger messenger,
})

Implementation

InAppWebViewWebElement({
  required dynamic viewId,
  required BinaryMessenger messenger,
}) {
  this._viewId = viewId;
  this._messenger = messenger;
  iframeContainer = HTMLDivElement()
    ..id = 'flutter_inappwebview-$_viewId-container'
    ..style.height = '100%'
    ..style.width = '100%'
    ..style.border = 'none';
  iframe = HTMLIFrameElement()
    ..id = 'flutter_inappwebview-$_viewId'
    ..style.height = '100%'
    ..style.width = '100%'
    ..style.border = 'none';
  iframeContainer.append(iframe);

  _channel = MethodChannel(
    'com.pichillilorenzo/flutter_inappwebview_$_viewId',
    const StandardMethodCodec(),
    _messenger,
  );

  this._channel?.setMethodCallHandler((call) async {
    try {
      return await handleMethodCall(call);
    } on Error catch (e) {
      log(
        e.toString(),
        name: runtimeType.toString(),
        error: e,
        stackTrace: e.stackTrace,
      );
    }
  });

  try {
    _expectedBridgeSecret = window.crypto.randomUUID();
  } catch (e) {
    _expectedBridgeSecret =
        (window.crypto.getRandomValues(typed_data.Uint32List(5).toJS)
                as JSUint32Array)
            .toDart
            .join('-');
  }

  jsWebView = flutterInAppWebView?.createFlutterInAppWebView(
    _viewId is int ? (_viewId as int).toJS : _viewId.toString().toJS,
    iframe,
    iframeContainer,
    _expectedBridgeSecret,
  );
}