I'm developing one web view flutter program and got stuck into one problem.
I can't get payload from ajax post request.
For example, I want to get login information when I click login button on the web view. I tried like this.
flutter sdk version:flutter_windows_3.13.6-stable
webview_flutter: ^4.4.1
path_provider: ^2.1.1
InAppWebView(
initialUrlRequest: URLRequest(url: Uri.parse('https://example.com')),
onWebViewCreated: (controller) {
_webViewController = controller;
_webViewController.addJavaScriptHandler(
handlerName: 'postPayload',
callback: (args) {
final payload = args.first;
print('Received AJAX post payload: $payload');
},
);
},
onLoadStart: (controller, url) {
print('Page started loading: $url');
},
onLoadStop: (controller, url) {
print('Page finished loading: $url');
},
onLoadError: (controller, url, code, message) {
print('Page resource error: $code - $message');
},
shouldOverrideUrlLoading: (controller, navigationAction) {
final url = navigationAction.request.url;
if (url.startsWith('https://www.youtube.com/')) {
print('Blocking navigation to $url');
return NavigationActionPolicy.CANCEL;
}
if (url.path.endsWith('.png') || url.path.endsWith('.jpg') || url.path.endsWith('.gif')) {
return NavigationActionPolicy.CANCEL;
}
print('Allowing navigation to $url');
return NavigationActionPolicy.ALLOW;
},
onLoadHttpError: (controller, url, statusCode, description) {
print('HTTP error: $statusCode - $description');
},
onAjaxReadyStateChange: (controller, request) {
if (request.method == 'POST') {
final payload = request.requestData;
print('Received AJAX post payload: $payload');
}
},
),
);
But onAjaxReadyStateChange handler, no response. Please help me. Thank you.