如何防止 flutter web htmlelementview 捕获其上方对象的触摸?

Szi*_*Ban 8 html dart flutter flutter-web

我正在使用 dart:html 中的 HTML 元素视图在我的 flutter web 应用程序中显示网页。它捕获其区域内的所有触摸,包括其上方 FAB 上的触摸,以及上下文中脚手架抽屉上的触摸。我什至不需要在网络视图上进行触摸输入,我只想显示它。另请注意,abstractpointer 和ignorepointer 并不能解决问题。这是在脚手架主体内显示网页的代码。

final IFrameElement _iframeElement = IFrameElement();
_iframeElement.src = "webpageurl";
_iframeElement.style.border = 'none';
// ignore: undefined_prefixed_name
ui.platformViewRegistry.registerViewFactory(
  'iframeElement',
  (int viewId) => _iframeElement,
);
Widget _iframeWidget;
_iframeWidget = HtmlElementView(
  key: UniqueKey(),
  viewType: 'iframeElement',
);
return Center(child: IgnorePointer(child: _iframeWidget));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

编辑:

final IFrameElement _iframeElement = IFrameElement();
_iframeElement.src = "https://index.hu/";
_iframeElement.style.border = 'none';
// ignore: undefined_prefixed_name
ui.platformViewRegistry.registerViewFactory(
  'iframeElement',
  (int viewId) => _iframeElement,
);
Widget _iframeWidget;
_iframeWidget = HtmlElementView(
  key: UniqueKey(),
  viewType: 'iframeElement',
);
return Stack(
  children: <Widget>[
    IgnorePointer(
      ignoring: true,
      child: Center(
        child: _iframeWidget,
      ),
    ),
    Container(
      color: Colors.transparent,
    ),
  ],
);
Run Code Online (Sandbox Code Playgroud)

小智 5

PointerInterceptor是一个小部件,可防止鼠标事件(在 Web 中)被底层 HtmlElementView 捕获。