method channel JavaScript flutter
flutter plugin : https://pub.dev/packages/webview_flutter
Step 1 - HTML CODE
<!DOCTYPE html>
<html>
<head>
<title>Thanks for your order!</title>
<link rel="stylesheet" href="css/style.css">
<script src="js/client.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
</body>
<script type='text/javascript'>
function postMessage(){
var data = {
message: "Response from web",
sender: "user123",
timestamp: new Date().toISOString()
};
var jsonData = JSON.stringify(data);
setTimeout(function() {
PayResponse.postMessage(jsonData);
}, 1500); // Delay of 1500 milliseconds (1.5 seconds)
}
window.onload = postMessage;
</script>
</html>
Step 2 - Flutter code
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class FlutterWebView extends StatefulWidget {
const FlutterWebView({Key? key}) : super(key: key);
@override
State<FlutterWebView> createState() => _FlutterWebViewState();
}
class _FlutterWebViewState extends State<FlutterWebView> {
late WebViewController webViewController;
@override
void initState() {
// TODO: implement initState
super.initState();
webViewController = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setBackgroundColor(const Color(0x00000000))
..setNavigationDelegate(
NavigationDelegate(
onProgress: (int progress) {
// Update loading bar.
},
onPageStarted: (String url) {},
onPageFinished: (String url) {},
onHttpError: (HttpResponseError error) {},
onWebResourceError: (WebResourceError error) {},
onNavigationRequest: (NavigationRequest request) {
if (request.url.startsWith('https://www.youtube.com/')) {
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
},
),
)
..loadRequest(Uri.parse(''))
..addJavaScriptChannel("PayResponse", onMessageReceived: (var message) {
print("------message received------");
print(message.message);
Navigator.of(context).pop(message.message);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.red,
body: WebViewWidget(
controller: webViewController,
));
}
}
Comments
Post a Comment