【问题标题】:How to prevent flutter web htmlelementview from catching touches from objects above it?如何防止flutter web htmlelementview捕捉到它上面的对象的触摸?
【发布时间】:2020-10-08 14:04:35
【问题描述】:

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

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));

编辑:

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,
    ),
  ],
);

【问题讨论】:

  • 遇到同样的问题,在没有帮助的情况下尝试了 IgnorePointer 和 AbsorbPointer

标签: html flutter dart flutter-web


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 2023-03-29
    • 1970-01-01
    • 2015-08-12
    • 2018-08-31
    • 2019-08-12
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多