如何在 Flutter WebView 或 InAppWebView 中添加 JavaScriptInterface?

How to add JavaScriptInterface in Flutter WebView or InAppWebView?

在Android我可以添加javascript接口:

class JsInterface(private val onClose: () -> Unit) {
    @android.webkit.JavascriptInterface    
    fun close() {
        onClose()    
    }
}
...
addJavascriptInterface(JsInterface { this@WebViewActivity.finish() }, "client")

如何在 Flutter WebView 或 InAppWebView 或其他包中执行相同

我建议您阅读 this 文章,他们会在其中仔细研究 flutter_inappwebview。但是试试这个代码示例来快速回答:

              InAppWebView(
                initialUrl: 'url',
                onWebViewCreated: (controller) =>
                    control.webController = controller
                      ..addJavaScriptHandler(
                        handlerName: 'serverSideJsFuncName',
                        callback: (data) {
                          // Catch and handle js function
                        },
                      ),
              )

另一方面,如果你想更新服务器端 JavaScript,你可以通过 InAppWebViewController 这样做:

  Future<void> evalJs(dynamic param) async {
    await webController.evaluateJavascript(
        source: "window.someFuncName( '$param ');");
  }