diff --git a/README.md b/README.md index 3f6a5bd9..f6f6ad0f 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,9 @@ Future launch(String url, { bool supportMultipleWindows: false, bool appCacheEnabled: false, bool allowFileURLs: false, + bool displayZoomControls: false, + bool useWideViewPort: false, + bool withOverviewMode: false, }); ``` diff --git a/android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java b/android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java index 087485cb..30d1e21b 100644 --- a/android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java +++ b/android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java @@ -93,7 +93,9 @@ private void openUrl(MethodCall call, MethodChannel.Result result) { boolean clearCache = call.argument("clearCache"); boolean clearCookies = call.argument("clearCookies"); boolean withZoom = call.argument("withZoom"); + boolean displayZoomControls = call.argument("displayZoomControls"); boolean withLocalStorage = call.argument("withLocalStorage"); + boolean withOverviewMode = call.argument("withOverviewMode"); boolean supportMultipleWindows = call.argument("supportMultipleWindows"); boolean appCacheEnabled = call.argument("appCacheEnabled"); Map headers = call.argument("headers"); @@ -120,7 +122,9 @@ private void openUrl(MethodCall call, MethodChannel.Result result) { url, headers, withZoom, + displayZoomControls, withLocalStorage, + withOverviewMode, scrollBar, supportMultipleWindows, appCacheEnabled, diff --git a/android/src/main/java/com/flutter_webview_plugin/WebviewManager.java b/android/src/main/java/com/flutter_webview_plugin/WebviewManager.java index 96cbc9b4..35b9d659 100644 --- a/android/src/main/java/com/flutter_webview_plugin/WebviewManager.java +++ b/android/src/main/java/com/flutter_webview_plugin/WebviewManager.java @@ -343,7 +343,9 @@ void openUrl( String url, Map headers, boolean withZoom, + boolean displayZoomControls, boolean withLocalStorage, + boolean withOverviewMode, boolean scrollBar, boolean supportMultipleWindows, boolean appCacheEnabled, @@ -356,7 +358,9 @@ void openUrl( webView.getSettings().setJavaScriptEnabled(withJavascript); webView.getSettings().setBuiltInZoomControls(withZoom); webView.getSettings().setSupportZoom(withZoom); + webView.getSettings().setDisplayZoomControls(displayZoomControls); webView.getSettings().setDomStorageEnabled(withLocalStorage); + webView.getSettings().setLoadWithOverviewMode(withOverviewMode); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(supportMultipleWindows); webView.getSettings().setSupportMultipleWindows(supportMultipleWindows); diff --git a/lib/src/base.dart b/lib/src/base.dart index 26fd6dcd..1993cd4d 100644 --- a/lib/src/base.dart +++ b/lib/src/base.dart @@ -111,6 +111,10 @@ class FlutterWebviewPlugin { /// - [invalidUrlRegex] is the regular expression of URLs that web view shouldn't load. /// For example, when webview is redirected to a specific URL, you want to intercept /// this process by stopping loading this URL and replacing webview by another screen. + /// Android only settings: + /// - [displayZoomControls]: display zoom controls on webview + /// - [withOverviewMode]: enable overview mode for Android webview ( setLoadWithOverviewMode ) + /// - [useWideViewPort]: use wide viewport for Android webview ( setUseWideViewPort ) Future launch(String url, { Map headers, bool withJavascript, @@ -121,8 +125,10 @@ class FlutterWebviewPlugin { Rect rect, String userAgent, bool withZoom, + bool displayZoomControls, bool withLocalStorage, bool withLocalUrl, + bool withOverviewMode, bool scrollBar, bool supportMultipleWindows, bool appCacheEnabled, @@ -141,6 +147,7 @@ class FlutterWebviewPlugin { 'enableAppScheme': enableAppScheme ?? true, 'userAgent': userAgent, 'withZoom': withZoom ?? false, + 'displayZoomControls': displayZoomControls ?? false, 'withLocalStorage': withLocalStorage ?? true, 'withLocalUrl': withLocalUrl ?? false, 'scrollBar': scrollBar ?? true, @@ -150,6 +157,7 @@ class FlutterWebviewPlugin { 'useWideViewPort': useWideViewPort ?? false, 'invalidUrlRegex': invalidUrlRegex, 'geolocationEnabled': geolocationEnabled ?? false, + 'withOverviewMode': withOverviewMode ?? false, 'debuggingEnabled': debuggingEnabled ?? false, }; diff --git a/lib/src/webview_scaffold.dart b/lib/src/webview_scaffold.dart index 37c94047..4fec7405 100644 --- a/lib/src/webview_scaffold.dart +++ b/lib/src/webview_scaffold.dart @@ -22,8 +22,11 @@ class WebviewScaffold extends StatefulWidget { this.persistentFooterButtons, this.bottomNavigationBar, this.withZoom, + this.displayZoomControls, this.withLocalStorage, this.withLocalUrl, + this.withOverviewMode, + this.useWideViewPort, this.scrollBar, this.supportMultipleWindows, this.appCacheEnabled, @@ -48,6 +51,7 @@ class WebviewScaffold extends StatefulWidget { final List persistentFooterButtons; final Widget bottomNavigationBar; final bool withZoom; + final bool displayZoomControls; final bool withLocalStorage; final bool withLocalUrl; final bool scrollBar; @@ -59,6 +63,8 @@ class WebviewScaffold extends StatefulWidget { final bool resizeToAvoidBottomInset; final String invalidUrlRegex; final bool geolocationEnabled; + final bool withOverviewMode; + final bool useWideViewPort; final bool debuggingEnabled; @override @@ -148,8 +154,11 @@ class _WebviewScaffoldState extends State { userAgent: widget.userAgent, rect: _rect, withZoom: widget.withZoom, + displayZoomControls: widget.displayZoomControls, withLocalStorage: widget.withLocalStorage, withLocalUrl: widget.withLocalUrl, + withOverviewMode: widget.withOverviewMode, + useWideViewPort: widget.useWideViewPort, scrollBar: widget.scrollBar, supportMultipleWindows: widget.supportMultipleWindows, appCacheEnabled: widget.appCacheEnabled,