首页 > 解决方案 > flutter_webview 在一个 javascript 通道中声明多个 javascript 接口

问题描述

我在 Java 中有这段代码,用于运行正常的 Android webView。

webView.addJavascriptInterface(new JavaScriptHandlers() {
            @Override
            @JavascriptInterface
            public void productModuleLoaded() {
                presenter.loaded()
            }

            @Override
            @JavascriptInterface
            public void productLogout() {
                presenter.onLogout();
            }
        }, "myMessageHandlers");

在flutter_webview中,我尝试这样做。

WebView(
              initialUrl: widget.pageUrl,
              javascriptMode: JavascriptMode.unrestricted,
              key: key,
              onPageStarted: startLoading,
              javascriptChannels: Set.from([
                JavascriptChannel(
                    name: "myMessageHandlers",
                    onMessageReceived: (JavascriptMessage message) {
                      print("webView received messageHandlers");
                    }),
                JavascriptChannel(
                    name: "productLogout",
                    onMessageReceived: (JavascriptMessage message) {
                      print("webView received productLogout");
                    }),
                JavascriptChannel(
                    name: "productModuleLoaded",
                    onMessageReceived: (JavascriptMessage message) {
                      print("webView received productModuleLoaded");
                    }),
              ]),
            ),

Web 应用程序向我发送以下错误“myMessageHandlers.productModuleLoaded 不是函数”。这似乎是合乎逻辑的,因为我声明了 3 个通道而不是 1 个具有 2 个接口的通道。

是否可以在flutter_webview中重现Android java代码?如果是这样,我该如何点呢?

标签: javascriptflutterwebview

解决方案


推荐阅读