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 21720cf6b4a2..5e8cb212d0ed 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 @@ -32,6 +32,10 @@ public class FlutterWebView implements PlatformView, MethodCallHandler { FlutterWebView(Context context, BinaryMessenger messenger, int id, Map params) { webView = new WebView(context); platformThreadHandler = new Handler(context.getMainLooper()); + boolean debug = (boolean) params.get("debug") || false; + + WebView.setWebContentsDebuggingEnabled(debug); + // Allow local storage. webView.getSettings().setDomStorageEnabled(true); diff --git a/packages/webview_flutter/example/lib/main.dart b/packages/webview_flutter/example/lib/main.dart index 0ec572956df7..358abf454193 100644 --- a/packages/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/example/lib/main.dart @@ -64,6 +64,7 @@ class WebViewExample extends StatelessWidget { onPageFinished: (String url) { print('Page finished loading: $url'); }, + debug: true, ); }), floatingActionButton: favoriteButton(), diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index d67e769fb1bb..e5477f218eb2 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -108,16 +108,17 @@ class WebView extends StatefulWidget { /// `onWebViewCreated` callback once the web view is created. /// /// The `javascriptMode` parameter must not be null. - const WebView({ - Key key, - this.onWebViewCreated, - this.initialUrl, - this.javascriptMode = JavascriptMode.disabled, - this.javascriptChannels, - this.navigationDelegate, - this.gestureRecognizers, - this.onPageFinished, - }) : assert(javascriptMode != null), + const WebView( + {Key key, + this.onWebViewCreated, + this.initialUrl, + this.javascriptMode = JavascriptMode.disabled, + this.javascriptChannels, + this.navigationDelegate, + this.gestureRecognizers, + this.onPageFinished, + this.debug}) + : assert(javascriptMode != null), super(key: key); /// If not null invoked once the web view is created. @@ -204,6 +205,7 @@ class WebView extends StatefulWidget { /// directly in the HTML has been loaded and code injected with /// [WebViewController.evaluateJavascript] can assume this. final PageFinishedCallback onPageFinished; + final bool debug; @override State createState() => _WebViewState(); @@ -294,15 +296,18 @@ Set _extractChannelNames(Set channels) { class _CreationParams { _CreationParams( - {this.initialUrl, this.settings, this.javascriptChannelNames}); + {this.initialUrl, + this.settings, + this.javascriptChannelNames, + this.debug}); static _CreationParams fromWidget(WebView widget) { return _CreationParams( - initialUrl: widget.initialUrl, - settings: _WebSettings.fromWidget(widget), - javascriptChannelNames: - _extractChannelNames(widget.javascriptChannels).toList(), - ); + initialUrl: widget.initialUrl, + settings: _WebSettings.fromWidget(widget), + javascriptChannelNames: + _extractChannelNames(widget.javascriptChannels).toList(), + debug: widget.debug); } final String initialUrl; @@ -310,12 +315,14 @@ class _CreationParams { final _WebSettings settings; final List javascriptChannelNames; + final bool debug; Map toMap() { return { 'initialUrl': initialUrl, 'settings': settings.toMap(), 'javascriptChannelNames': javascriptChannelNames, + 'debug': debug }; } }