im integrating webview in my flutter app. here is the related code:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class _WebViewStackState extends State<WebViewStack> {
var loaded = false;
late WebViewController _webViewController;
@override
void initState() {
super.initState();
_webViewController = WebViewController()
..loadRequest(Uri.parse(widget.url))
..setNavigationDelegate(
NavigationDelegate(
onPageStarted: (url) {},
onProgress: (progress) {},
onPageFinished: (url) {
setState(() {
loaded = true;
});
},
onNavigationRequest: (navigation) {
final host = Uri.parse(navigation.url).host;
print(host);
return NavigationDecision.navigate;
},
),
)
..setJavaScriptMode(JavaScriptMode.unrestricted)
..addJavaScriptChannel(
'callNativeMethod',
onMessageReceived: (message) {
print(message.message);
},
)
..addJavaScriptChannel('callAnalysisEvents',
onMessageReceived: (message) {
print(message.message);
});
}
@override
Widget build(BuildContext context) {
print(widget.url);
return
SafeArea(
child: WebViewWidget(
controller: _webViewController,
));
}
}
I can receive messages from iOS, but cannot in android.
here is the code from js side:
iOS
messageHandlers.callNativeMethod.postMessage
android
window.external. CallNativeMethod(JSON.stringify({type,data}))
already set this in AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
I also tried InAppWebView, but I didn’t receive any message from the js side.
hope it working fine in both iOS and android. have I missed something?
any ideas?
New contributor
Sat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.