2

我在我的应用程序中使用3.0.0webview_flutter版本。我大量使用颤振和javascript之间的双向通信。一切都很好地在调试模式下工作。但是,在我构建 APK 之后,javascript 通道开始出现一些错误。我尝试过并得到了同样的错误。flutter run --release

在我的 Web 应用程序 (ReactJs) 中,我以这种方式使用通道:

索引.html

<div id="root">
    <script>
        function sendToFlutter(message) {
            if (flutterChannel) {
                flutterChannel.postMessage(message);
            }
        }
    </script>
</div>

调用来自 React 组件,如下所示:

window.sendToFlutter("hello-world");

我的 Flutter 端的 Webview 设置:

Completer<WebViewController> webViewCompleter = Completer<WebViewController>();

WebView(
    debuggingEnabled: false,
    initialUrl: "https://example.com",
    javascriptMode: JavascriptMode.unrestricted,
    onWebViewCreated: (WebViewController webViewController) {
        webViewCompleter.complete(webViewController);
    },
    javascriptChannels: <JavascriptChannel>{
        JavascriptChannel(
        name: "flutterChannel",
        onMessageReceived: (JavascriptMessage message) {

          if (message.message == "hello-world") {
            // Do something
          }
        })
    },
    navigationDelegate: (NavigationRequest request) {
        if (request.url.startsWith('https://www.youtube.com/')) {
            return NavigationDecision.prevent;
        }
        
        return NavigationDecision.navigate;
    },
    gestureNavigationEnabled: true,
    zoomEnabled: false,
    userAgent: Platform.isAndroid ? kAndroidUserAgent : kIosUserAgent,
);

当我从 ReactJs 调用通道时,我收到此错误:

TypeError: flutterChannel.postMessage is not a function
4

0 回答 0