diff --git a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java index 1ff869b04c61..70992a4b9600 100644 --- a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java +++ b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java @@ -174,6 +174,9 @@ private void applySettings(Map settings) { case "jsMode": updateJsMode((Integer) settings.get(key)); break; + case "zoom": + updateZoomMode((boolean) settings.get(key)); + break; default: throw new IllegalArgumentException("Unknown WebView setting: " + key); } @@ -193,6 +196,14 @@ private void updateJsMode(int mode) { } } + private void updateZoomMode(boolean mode) { + //webView.getSettings().setLoadWithOverviewMode(true); + webView.getSettings().setUseWideViewPort(mode); + webView.getSettings().setBuiltInZoomControls(mode); + // Pop-up zoom controls disabled. This is a temporary stop because dialog is not responding to touch events. + webView.getSettings().setDisplayZoomControls(false); + } + private void registerJavaScriptChannelNames(List channelNames) { for (String channelName : channelNames) { webView.addJavascriptInterface( diff --git a/packages/webview_flutter/example/lib/main.dart b/packages/webview_flutter/example/lib/main.dart index 4e3fe6cbdbdd..efe24264f787 100644 --- a/packages/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/example/lib/main.dart @@ -28,6 +28,7 @@ class WebViewExample extends StatelessWidget { body: Builder(builder: (BuildContext context) { return WebView( initialUrl: 'https://flutter.io', + zoom: true, javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (WebViewController webViewController) { _controller.complete(webViewController); diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index a4bb285a2d8d..f85dbc502041 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -79,6 +79,7 @@ class WebView extends StatefulWidget { this.javascriptMode = JavascriptMode.disabled, this.javascriptChannels, this.gestureRecognizers, + this.zoom = false, }) : assert(javascriptMode != null), super(key: key); @@ -130,7 +131,10 @@ class WebView extends StatefulWidget { /// /// A null value is equivalent to an empty set. final Set javascriptChannels; - + + /// Enable/Disable zoom. + final bool zoom; + @override State createState() => _WebViewState(); } @@ -256,19 +260,19 @@ class _CreationParams { } class _WebSettings { - _WebSettings({ - this.javascriptMode, - }); - + _WebSettings({this.javascriptMode, this.zoom}); static _WebSettings fromWidget(WebView widget) { - return _WebSettings(javascriptMode: widget.javascriptMode); + return _WebSettings( + javascriptMode: widget.javascriptMode, zoom: widget.zoom); } final JavascriptMode javascriptMode; - + final bool zoom; + Map toMap() { return { 'jsMode': javascriptMode.index, + 'zoom': zoom, }; } @@ -278,6 +282,7 @@ class _WebSettings { } return { 'jsMode': newSettings.javascriptMode.index, + 'zoom': newSettings.zoom, }; } } diff --git a/packages/webview_flutter/res/values/strings_en.arb b/packages/webview_flutter/res/values/strings_en.arb new file mode 100644 index 000000000000..e69de29bb2d1