我在我的应用程序中使用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