onAjaxReadyStateChange property

  1. @SupportedPlatforms.new(platforms: [AndroidPlatform(note: """In order to be able to listen this event, check the [InAppWebViewSettings.useShouldInterceptAjaxRequest] and [InAppWebViewSettings.useOnAjaxReadyStateChange] settings documentation. Also, on Android that doesn't support the [WebViewFeature.DOCUMENT_START_SCRIPT], unlike iOS that has [WKUserScript](https://developer.apple.com/documentation/webkit/wkuserscript) that can inject javascript code right after the document element is created but before any other content is loaded, in Android the javascript code used to intercept ajax requests is loaded as soon as possible so it won't be instantaneous as iOS. In that case, after the `window.addEventListener("flutterInAppWebViewPlatformReady")` event is dispatched, the ajax requests can be intercept for sure."""), IOSPlatform(), MacOSPlatform(), LinuxPlatform(note: 'This event is implemented using JavaScript. In order to be able to listen to this event, check the [InAppWebViewSettings.useShouldInterceptAjaxRequest] and [InAppWebViewSettings.useOnAjaxReadyStateChange] settings documentation.')])
FutureOr<AjaxRequestAction?> Function(T controller, AjaxRequest ajaxRequest)? onAjaxReadyStateChange
final

Event fired whenever the readyState attribute of an XMLHttpRequest changes. It gives the host application a chance to abort the request. This event is implemented using JavaScript under the hood.

Due to the async nature of this event implementation, using it could cause some issues, so, be careful when using it. In this case, you should implement your own logic using for example an UserScript overriding the XMLHttpRequest JavaScript object.

ajaxRequest represents the XMLHttpRequest.

Officially Supported Platforms/Implementations:

Parameters - Officially Supported Platforms/Implementations:

  • ajaxRequest: all platforms

Use the PlatformWebViewCreationParams.isPropertySupported method to check if this property is supported at runtime.

Implementation

@SupportedPlatforms(
  platforms: [
    AndroidPlatform(
      note:
          """In order to be able to listen this event, check the [InAppWebViewSettings.useShouldInterceptAjaxRequest] and [InAppWebViewSettings.useOnAjaxReadyStateChange] settings documentation.
Also, on Android that doesn't support the [WebViewFeature.DOCUMENT_START_SCRIPT], unlike iOS that has [WKUserScript](https://developer.apple.com/documentation/webkit/wkuserscript) that
can inject javascript code right after the document element is created but before any other content is loaded, in Android the javascript code
used to intercept ajax requests is loaded as soon as possible so it won't be instantaneous as iOS.
In that case, after the `window.addEventListener("flutterInAppWebViewPlatformReady")` event is dispatched, the ajax requests can be intercept for sure.""",
    ),
    IOSPlatform(),
    MacOSPlatform(),
    LinuxPlatform(
      note:
          'This event is implemented using JavaScript. In order to be able to listen to this event, check the [InAppWebViewSettings.useShouldInterceptAjaxRequest] and [InAppWebViewSettings.useOnAjaxReadyStateChange] settings documentation.',
    ),
  ],
)
final FutureOr<AjaxRequestAction?> Function(
  T controller,
  AjaxRequest ajaxRequest,
)?
onAjaxReadyStateChange;