我试图在下面的代码中调用一个函数 (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 中的任何更改添加监听器
在 flutter 中添加监听器
最终存储 webLocalStorage = window.localStorage;
htmlListener(){ String buttonClicked = webLocalStorage["buttonClicked"]; 如果(按钮点击=="is"){ //做任何事 }别的{ Future.delayed(持续时间(毫秒: 100), (){ htmlListener(); }); }
对 HTML 中的 webstorage 做一些更改
var webLocalStorage = window.localStorage; webLocalStorage["buttonClicked"] = "是";
反之亦然,即从 html 中监听,在 flutter 中进行更改。
关于javascript - 使用 HtmlElementView Widget 时如何触发函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62800825/