flutter inappwebview没有在控制台上打印



我正在网站和flutter之间建立通信,我想在点击按钮时发送消息,我已经实现了下面的代码。

<button onclick="buttonClick()" type="button">Cancel</button>
<script>
function buttonClick() {
window.addEventListener("flutterInAppWebViewPlatformReady", function(event) {
window.flutter_inappwebview.callHandler('cancelbuttonState', 1, true,['msg','CancelbuttonClicked'], {test:'Go-Back'}).then(function(result) {

alert("Hello! Cancel Buttton clicked!!");
console.log('Hello! Cancel Buttton clicked!!');
});
});

}
</script>

在颤振方面,我已经实现了以下步骤来获得消息

controller.addJavaScriptHandler(
handlerName: "cancelbuttonState",
callback: (args) async {
print('Cancel Button clicked');

return args.reduce((curr, next) => curr + next);
});

但JavaScript和应用程序都给了我控制台打印感谢。

您在cancel函数体中执行下面的行太晚了。您需要更早地添加侦听器,以便注册回调。

换句话说,您正在收听一个已经结束的事件。

window.addEventListener("flutterInAppWebViewPlatformReady" .....

以类似以下的方式重新组织代码:

<button onclick="buttonClick()" type="button">Cancel</button>
<script>
isAppReady = false;
window.addEventListener("flutterInAppWebViewPlatformReady", function (event) {
isAppReady = true;
});
function buttonClick() {
if (isAppReady) {
window.flutter_inappwebview.callHandler('cancelbuttonState', 1, true, ['msg', 'CancelbuttonClicked'], { test: 'Go-Back' }).then(function (result) {
alert("Hello! Cancel Buttton clicked!!");
console.log('Hello! Cancel Buttton clicked!!');
});
}
}
</script>

相关内容

  • 没有找到相关文章

最新更新