Merge branch 'ashank-patch' of https://github.com/ashank96/flutter_inappwebview into ashank96-ashank-patch

This commit is contained in:
Lorenzo Pichilli 2022-04-16 12:38:52 +02:00
commit 1e287fd1d3
7 changed files with 22 additions and 7 deletions

View File

@ -1184,6 +1184,10 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Map<String, Object> obj = new HashMap<>();
obj.put("url", url);
obj.put("userAgent", userAgent);
obj.put("contentDisposition", contentDisposition);
obj.put("mimetype", mimetype);
obj.put("contentLength", contentLength);
channel.invokeMethod("onDownloadStart", obj);
}
}

View File

@ -2739,7 +2739,7 @@ void main() {
onWebViewCreated: (controller) {
controllerCompleter.complete(controller);
},
onDownloadStart: (controller, url) {
onDownloadStart:(controller, url, userAgent, contentDisposition, mimeType, contentLength) {
onDownloadStartCompleter.complete(url.toString());
},
),

View File

@ -386,7 +386,7 @@ class InAppBrowser {
///**Official Android API**: https://developer.android.com/reference/android/webkit/WebView#setDownloadListener(android.webkit.DownloadListener)
///
///**Official iOS API**: https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455643-webview
void onDownloadStart(Uri url) {}
void onDownloadStart(Uri url, String userAgent, String contentDisposition, String mimeType, int contentLength) {}
///Event fired when the [InAppBrowser] webview finds the `custom-scheme` while loading a resource. Here you can handle the url request and return a [CustomSchemeResponse] to load a specific resource encoded to `base64`.
///

View File

@ -302,7 +302,13 @@ class HeadlessInAppWebView implements WebView {
void Function(InAppWebViewController controller)? onWindowBlur;
@override
void Function(InAppWebViewController controller, Uri url)? onDownloadStart;
void Function(
InAppWebViewController controller,
Uri url,
String userAgent,
String contentDisposition,
String mimeType,
int contentLength)? onDownloadStart;
@override
void Function(InAppWebViewController controller, int activeMatchOrdinal,

View File

@ -212,7 +212,7 @@ class InAppWebView extends StatefulWidget implements WebView {
androidOnReceivedTouchIconUrl;
@override
final void Function(InAppWebViewController controller, Uri url)?
final void Function(InAppWebViewController controller, Uri url, String userAgent, String contentDisposition, String mimeType, int contentLength)?
onDownloadStart;
@override

View File

@ -205,11 +205,16 @@ class InAppWebViewController {
if ((_webview != null && _webview!.onDownloadStart != null) ||
_inAppBrowser != null) {
String url = call.arguments["url"];
String userAgent = call.arguments["userAgent"];
String contentDisposition = call.arguments["contentDisposition"];
String mimeType = call.arguments["mimetype"];
int contentLength = call.arguments["contentLength"] as int;
Uri uri = Uri.parse(url);
if (_webview != null && _webview!.onDownloadStart != null)
_webview!.onDownloadStart!(this, uri);
_webview!.onDownloadStart!(this, uri, userAgent, contentDisposition, mimeType, contentLength);
else
_inAppBrowser!.onDownloadStart(uri);
_inAppBrowser!.onDownloadStart(uri, userAgent, contentDisposition, mimeType, contentLength);
}
break;
case "onLoadResourceCustomScheme":

View File

@ -122,7 +122,7 @@ abstract class WebView {
///**Official Android API**: https://developer.android.com/reference/android/webkit/WebView#setDownloadListener(android.webkit.DownloadListener)
///
///**Official iOS API**: https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455643-webview
final void Function(InAppWebViewController controller, Uri url)?
final void Function(InAppWebViewController controller, Uri url, String userAgent, String contentDisposition, String mimeType, int contentLength)?
onDownloadStart;
///Event fired when the [WebView] finds the `custom-scheme` while loading a resource. Here you can handle the url request and return a [CustomSchemeResponse] to load a specific resource encoded to `base64`.