javascript - 使用 HtmlElementView Widget 时如何触发函数?

标签 javascript html flutter dart iframe

我试图在下面的代码中调用一个函数 (widget.onTap())

GestureDetector(
  onTap: () {
    widget.onTap()
  },
  child: Container(
     height: 1.9 * widget.height,
     width: 1.2 * widget.width,
        child: HtmlElementView(viewType: 'liquid-button', key: UniqueKey(),),
     ),
  )

我已经注册了我的“liquid-button”

ui.platformViewRegistry.registerViewFactory('liquid-button', (int viewId) {
var element = html.IFrameElement()
        ..style.border = 'none'
        ..srcdoc = """
        <!DOCTYPE html>
          <head>
          </head>
          <body>
            <svg class="liquid-button"
          ...
         """
   return element;
});

问题是无论我尝试什么,我都无法从用户那里获取任何信息。 GestureDetector 不起作用,按钮也不起作用。我能够在 JS 中触发一些代码,但我需要在 Dart 中处理它。这可能吗?

最佳答案

我刚刚找到了解决这个问题的方法。 所以基本上,我们可以利用可以从 flutter 和 html 访问的 window.localStorage,并在 flutter 中为 window.localStorage 中的任何更改添加监听器

  1. 在 flutter 中添加监听器

    最终存储 webLocalStorage = window.localStorage;

    htmlListener(){ String buttonClicked = webLocalStorage["buttonClicked"]; 如果(按钮点击=="is"){ //做任何事 }别的{ Future.delayed(持续时间(毫秒: 100), (){ htmlListener(); }); }

  2. 对 HTML 中的 webstorage 做一些更改

    var webLocalStorage = window.localStorage; webLocalStorage["buttonClicked"] = "是";

反之亦然,即从 html 中监听,在 flutter 中进行更改。

关于javascript - 使用 HtmlElementView Widget 时如何触发函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62800825/

相关文章:

javascript - 如何一次不快速地轻柔滚动

javascript - 使用 jQuery 或 Javascript 保护或启用链接的 'href' 属性

flutter - 如何给 SliverGrid 设置背景颜色?

android - 如何在 flutter 中获取 android 绘图

javascript - JQuery 选择 TreeNode 元素不起作用

javascript - 如何弹出网页元素而不删除它?

JavaScript 输入聚合函数不包括默认输入值

html - 当窗口大小改变时调整标题大小

javascript - 使用 JavaScript 提交 HTML 表单确认 Google Chrome 上的延迟

flutter - 列 flutter 内的水平滚动