2

webview_flutterアプリでバージョン3.0.0を使用しています。フラッターとJavaScriptの間の双方向通信を頻繁に使用しています。すべてがデバッグモードでうまく機能します。しかし、APK をビルドした後、javascript チャネルでいくつかのエラーが発生し始めました。で試してみましflutter run --releaseたが、同じエラーが発生しました。

私の Web アプリケーション (ReactJs) では、次のようにチャネルを使用しています。

index.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