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