From 46cc65d3f634a6d4b9411c920decc49121a19cf6 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Thu, 30 Apr 2020 15:00:13 +0530 Subject: [PATCH 01/19] Update webview_flutter.dart --- packages/webview_flutter/lib/webview_flutter.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index 2635b0446fa2..49ea99e2d75f 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -144,6 +144,8 @@ class WebView extends StatefulWidget { Key key, this.onWebViewCreated, this.initialUrl, + this.html, + this.baseUrl, this.javascriptMode = JavascriptMode.disabled, this.javascriptChannels, this.navigationDelegate, @@ -209,6 +211,8 @@ class WebView extends StatefulWidget { /// The initial URL to load. final String initialUrl; + final String baseUrl; + final String html; /// Whether Javascript execution is enabled. final JavascriptMode javascriptMode; @@ -389,6 +393,8 @@ class _WebViewState extends State { CreationParams _creationParamsfromWidget(WebView widget) { return CreationParams( initialUrl: widget.initialUrl, + html: widget.html, + baseUrl: widget.baseUrl, webSettings: _webSettingsFromWidget(widget), javascriptChannelNames: _extractChannelNames(widget.javascriptChannels), userAgent: widget.userAgent, From 852329b362712b8f2a943f8a3c98e833714c6de8 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Thu, 30 Apr 2020 15:01:30 +0530 Subject: [PATCH 02/19] Update platform_interface.dart --- packages/webview_flutter/lib/platform_interface.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index 238d25b9c677..cb853c205352 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -420,6 +420,8 @@ class CreationParams { /// The `autoMediaPlaybackPolicy` parameter must not be null. CreationParams({ this.initialUrl, + this.html, + this.baseUrl, this.webSettings, this.javascriptChannelNames, this.userAgent, @@ -431,7 +433,8 @@ class CreationParams { /// /// When null the webview will be created without loading any page. final String initialUrl; - + final String baseUrl; + final String html; /// The initial [WebSettings] for the new webview. /// /// This can later be updated with [WebViewPlatformController.updateSettings]. From edc8a5dc6f0b5c001055da258c32471fac567511 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Thu, 30 Apr 2020 15:03:54 +0530 Subject: [PATCH 03/19] Update FlutterWebView.m --- .../ios/Classes/FlutterWebView.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 969e010913f3..96f48636acd9 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -110,10 +110,19 @@ - (instancetype)initWithFrame:(CGRect)frame [self applySettings:settings]; // TODO(amirh): return an error if apply settings failed once it's possible to do so. // https://github.com/flutter/flutter/issues/36228 - - NSString* initialUrl = args[@"initialUrl"]; - if ([initialUrl isKindOfClass:[NSString class]]) { - [self loadUrl:initialUrl]; + + NSString* html = args[@"html"]; + if ([html isKindOfClass:[NSString class]]) { + NSURL* baseURL = args[@"baseUrl"]; + if (!baseURL) { + baseURL = [NSURL URLWithString:@"about:blank"]; + } + [_webView loadHTMLString:html baseURL:baseURL]; + } else { + NSString* initialUrl = args[@"initialUrl"]; + if ([initialUrl isKindOfClass:[NSString class]]) { + [self loadUrl:initialUrl]; + } } } return self; From 1e97e46072600cf8f6cca497c3f328eb1dba1bd3 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Thu, 30 Apr 2020 15:32:52 +0530 Subject: [PATCH 04/19] Update FlutterWebView.java --- .../flutter/plugins/webviewflutter/FlutterWebView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 f9659d9873f4..f70b8c0e7e74 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 @@ -65,7 +65,15 @@ public class FlutterWebView implements PlatformView, MethodCallHandler { String userAgent = (String) params.get("userAgent"); updateUserAgent(userAgent); } - if (params.containsKey("initialUrl")) { + if (params.containsKey("html")) { + String html = (String) params.get("html"); + if (params.containsKey("baseUrl")) { + String baseUrl = (String) params.get("baseUrl"); + webView.loadDataWithBaseURL(baseUrl, html, "text/html", "UTF-8", null); + } else { + webView.loadData(html, "text/html", "UTF-8"); + } + } else if (params.containsKey("initialUrl")) { String url = (String) params.get("initialUrl"); webView.loadUrl(url); } From 2a67d0286d5cb7e7d82639c6bc32cb533d1a2161 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Thu, 30 Apr 2020 15:49:40 +0530 Subject: [PATCH 05/19] Update webview_method_channel.dart --- packages/webview_flutter/lib/src/webview_method_channel.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index a75dee3c172b..96ab9f00f1a1 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -192,6 +192,8 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { CreationParams creationParams) { return { 'initialUrl': creationParams.initialUrl, + 'html': creationParams.html, + 'baseUrl': creationParams.baseUrl, 'settings': _webSettingsToMap(creationParams.webSettings), 'javascriptChannelNames': creationParams.javascriptChannelNames.toList(), 'userAgent': creationParams.userAgent, From 62e499aac6d36c3f1f3082301fdac60f01a235ea Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 12:06:16 +0530 Subject: [PATCH 06/19] Update FlutterWebView.m --- packages/webview_flutter/ios/Classes/FlutterWebView.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 96f48636acd9..995ba9346639 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -113,11 +113,13 @@ - (instancetype)initWithFrame:(CGRect)frame NSString* html = args[@"html"]; if ([html isKindOfClass:[NSString class]]) { - NSURL* baseURL = args[@"baseUrl"]; - if (!baseURL) { - baseURL = [NSURL URLWithString:@"about:blank"]; + NSString* baseURLString = args[@"baseUrl"]; + if ([baseURLString isKindOfClass:[NSString class]]) { + NSURL *baseURL = [NSURL URLWithString:baseURLString]; + [_webView loadHTMLString:html baseURL: baseURL]; + } else { + [_webView loadHTMLString:html baseURL: nil]; } - [_webView loadHTMLString:html baseURL:baseURL]; } else { NSString* initialUrl = args[@"initialUrl"]; if ([initialUrl isKindOfClass:[NSString class]]) { From 066b1e47fc28766daf16588824a6c9b5a8af5bbb Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 15:28:42 +0530 Subject: [PATCH 07/19] baseUrl and local HTML support in ios and android baseUrl: "file://"+path+"/" --- .../lib/src/webview_method_channel.dart | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index 96ab9f00f1a1..b3317ea847bc 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -190,14 +190,20 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { /// [AndroidWebViewBuilder] and [CupertinoWebViewBuilder]. static Map creationParamsToMap( CreationParams creationParams) { - return { + var creationParamMap = { 'initialUrl': creationParams.initialUrl, - 'html': creationParams.html, - 'baseUrl': creationParams.baseUrl, 'settings': _webSettingsToMap(creationParams.webSettings), 'javascriptChannelNames': creationParams.javascriptChannelNames.toList(), 'userAgent': creationParams.userAgent, 'autoMediaPlaybackPolicy': creationParams.autoMediaPlaybackPolicy.index, }; + + if (creationParams.html != null) { + creationParamMap['html'] = creationParams.html; + } + if (creationParams.baseUrl != null) { + creationParamMap['baseUrl'] = creationParams.baseUrl; + } + return creationParamMap; } } From 6632ec6284f6c02562d646ec47281ce9c7b904ed Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 15:40:17 +0530 Subject: [PATCH 08/19] Update webview_flutter.dart --- packages/webview_flutter/lib/webview_flutter.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index 49ea99e2d75f..ce7a54a18f6e 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -553,6 +553,10 @@ class WebViewController { _validateUrlString(url); return _webViewPlatformController.loadUrl(url, headers); } + + Future loadHtml(String html) async { + return _webViewPlatformController.loadHtml(html); + } /// Accessor to the current URL that the WebView is displaying. /// From 21d47c7bba0238be3e09599e7b4f5b46a316ed23 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 15:54:10 +0530 Subject: [PATCH 09/19] Update platform_interface.dart --- packages/webview_flutter/lib/platform_interface.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index cb853c205352..f391943adafc 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -174,6 +174,11 @@ abstract class WebViewPlatformController { throw UnimplementedError( "WebView loadUrl is not implemented on the current platform"); } + + Future loadHtml(String html) { + throw UnimplementedError( + "WebView loadUrl is not implemented on the current platform"); + } /// Updates the webview settings. /// From c9b15d9832837ffea041efd93bcfdffe9b266216 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 15:55:50 +0530 Subject: [PATCH 10/19] Update platform_interface.dart --- packages/webview_flutter/lib/platform_interface.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index f391943adafc..cfd879008793 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -177,7 +177,7 @@ abstract class WebViewPlatformController { Future loadHtml(String html) { throw UnimplementedError( - "WebView loadUrl is not implemented on the current platform"); + "WebView loadHtml is not implemented on the current platform"); } /// Updates the webview settings. From 0cec3826b9f15c564214b34a06573df0aea7fbca Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 16:43:14 +0530 Subject: [PATCH 11/19] Update webview_method_channel.dart --- .../webview_flutter/lib/src/webview_method_channel.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index b3317ea847bc..1e4b12b610ed 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -78,6 +78,13 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { 'headers': headers, }); } + + @override + Future loadHtml(String html) async { + return _channel.invokeMethod('loadHtml', { + 'html': html, + }); + } @override Future currentUrl() => _channel.invokeMethod('currentUrl'); From afa227c83583d7d001dffa5ab885222bfaa31fd7 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 17:24:32 +0530 Subject: [PATCH 12/19] Update FlutterWebView.m --- .../ios/Classes/FlutterWebView.m | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 995ba9346639..96a4397d829c 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -115,7 +115,7 @@ - (instancetype)initWithFrame:(CGRect)frame if ([html isKindOfClass:[NSString class]]) { NSString* baseURLString = args[@"baseUrl"]; if ([baseURLString isKindOfClass:[NSString class]]) { - NSURL *baseURL = [NSURL URLWithString:baseURLString]; + baseURL = [NSURL URLWithString:baseURLString]; [_webView loadHTMLString:html baseURL: baseURL]; } else { [_webView loadHTMLString:html baseURL: nil]; @@ -130,6 +130,8 @@ - (instancetype)initWithFrame:(CGRect)frame return self; } +NSURL *baseURL = nil; + - (UIView*)view { return _webView; } @@ -139,6 +141,8 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { [self onUpdateSettings:call result:result]; } else if ([[call method] isEqualToString:@"loadUrl"]) { [self onLoadUrl:call result:result]; + } else if ([[call method] isEqualToString:@"loadHtml"]) { + [self onLoadHtml:call result:result]; } else if ([[call method] isEqualToString:@"canGoBack"]) { [self onCanGoBack:call result:result]; } else if ([[call method] isEqualToString:@"canGoForward"]) { @@ -194,6 +198,18 @@ - (void)onLoadUrl:(FlutterMethodCall*)call result:(FlutterResult)result { } } +- (void)onLoadHtml:(FlutterMethodCall*)call result:(FlutterResult)result { + NSString* html = [call arguments][@"html"]; + if ([html isKindOfClass:[NSString class]]) { + if (baseURL != nil) { + [_webView loadHTMLString:html baseURL: baseURL]; + } else { + [_webView loadHTMLString:html baseURL: nil]; + } + } + result(nil); +} + - (void)onCanGoBack:(FlutterMethodCall*)call result:(FlutterResult)result { BOOL canGoBack = [_webView canGoBack]; result([NSNumber numberWithBool:canGoBack]); From 5861fa35a7404933182716e2e7363af39137b0ff Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sat, 2 May 2020 17:49:12 +0530 Subject: [PATCH 13/19] Update FlutterWebView.java --- .../webviewflutter/FlutterWebView.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 f70b8c0e7e74..e38df3ffc293 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 @@ -28,6 +28,7 @@ public class FlutterWebView implements PlatformView, MethodCallHandler { private final MethodChannel methodChannel; private final FlutterWebViewClient flutterWebViewClient; private final Handler platformThreadHandler; + private String baseUrl; @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @SuppressWarnings("unchecked") @@ -68,7 +69,7 @@ public class FlutterWebView implements PlatformView, MethodCallHandler { if (params.containsKey("html")) { String html = (String) params.get("html"); if (params.containsKey("baseUrl")) { - String baseUrl = (String) params.get("baseUrl"); + baseUrl = (String) params.get("baseUrl"); webView.loadDataWithBaseURL(baseUrl, html, "text/html", "UTF-8", null); } else { webView.loadData(html, "text/html", "UTF-8"); @@ -130,6 +131,9 @@ public void onMethodCall(MethodCall methodCall, Result result) { case "loadUrl": loadUrl(methodCall, result); break; + case "loadHtml": + loadHtml(methodCall, result); + break; case "updateSettings": updateSettings(methodCall, result); break; @@ -195,6 +199,20 @@ private void loadUrl(MethodCall methodCall, Result result) { result.success(null); } + @SuppressWarnings("unchecked") + private void loadHtml(MethodCall methodCall, Result result) { + Map request = (Map) methodCall.arguments; + String html = (String) request.get("html"); + if (html != null) { + if (baseUrl != null) { + webView.loadDataWithBaseURL(baseUrl, html, "text/html", "UTF-8", null); + } else { + webView.loadData(html, "text/html", "UTF-8"); + } + } + result.success(null); + } + private void canGoBack(Result result) { result.success(webView.canGoBack()); } From ca3e742d7fc0d809798c6bfccb8ecc316d1f5945 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sun, 3 May 2020 16:16:40 +0530 Subject: [PATCH 14/19] Update webview_flutter.dart --- packages/webview_flutter/lib/webview_flutter.dart | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index ce7a54a18f6e..c0a3d27b7c78 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -211,7 +211,11 @@ class WebView extends StatefulWidget { /// The initial URL to load. final String initialUrl; + + /// The initial baseURL to load. final String baseUrl; + + /// The initial static html to load. final String html; /// Whether Javascript execution is enabled. @@ -554,7 +558,12 @@ class WebViewController { return _webViewPlatformController.loadUrl(url, headers); } + /// Loads the specified html. + /// + /// `html` must not be null. + /// Future loadHtml(String html) async { + assert(html != null); return _webViewPlatformController.loadHtml(html); } From 9697b39875778611e016a5f86ce52665fcfbff6b Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Sun, 3 May 2020 16:22:47 +0530 Subject: [PATCH 15/19] Added comments --- packages/webview_flutter/lib/platform_interface.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index cfd879008793..168d4b8d6db8 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -175,6 +175,9 @@ abstract class WebViewPlatformController { "WebView loadUrl is not implemented on the current platform"); } + /// Loads the specified html. + /// + /// `html` must not be null. Future loadHtml(String html) { throw UnimplementedError( "WebView loadHtml is not implemented on the current platform"); @@ -438,7 +441,11 @@ class CreationParams { /// /// When null the webview will be created without loading any page. final String initialUrl; + + /// The initial baseUrl to load in the webview. It will work with html only. final String baseUrl; + + /// The initial html to load in the webview. This will be preferred over initialUrl if it exists. final String html; /// The initial [WebSettings] for the new webview. /// From 9f2ff55f8f44db508a075234aa64a0ae92e9b697 Mon Sep 17 00:00:00 2001 From: uc-apa Date: Thu, 7 May 2020 11:12:03 +0530 Subject: [PATCH 16/19] formatting fixed --- packages/webview_flutter/lib/platform_interface.dart | 7 ++++--- .../webview_flutter/lib/src/webview_method_channel.dart | 2 +- packages/webview_flutter/lib/webview_flutter.dart | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index 168d4b8d6db8..11205bb552c1 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -174,7 +174,7 @@ abstract class WebViewPlatformController { throw UnimplementedError( "WebView loadUrl is not implemented on the current platform"); } - + /// Loads the specified html. /// /// `html` must not be null. @@ -441,12 +441,13 @@ class CreationParams { /// /// When null the webview will be created without loading any page. final String initialUrl; - + /// The initial baseUrl to load in the webview. It will work with html only. final String baseUrl; - + /// The initial html to load in the webview. This will be preferred over initialUrl if it exists. final String html; + /// The initial [WebSettings] for the new webview. /// /// This can later be updated with [WebViewPlatformController.updateSettings]. diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index 1e4b12b610ed..e06f8475ce6b 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -78,7 +78,7 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { 'headers': headers, }); } - + @override Future loadHtml(String html) async { return _channel.invokeMethod('loadHtml', { diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index c0a3d27b7c78..f8e64e28ac84 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -211,10 +211,10 @@ class WebView extends StatefulWidget { /// The initial URL to load. final String initialUrl; - + /// The initial baseURL to load. final String baseUrl; - + /// The initial static html to load. final String html; @@ -557,7 +557,7 @@ class WebViewController { _validateUrlString(url); return _webViewPlatformController.loadUrl(url, headers); } - + /// Loads the specified html. /// /// `html` must not be null. From 8aaa583f4e14212b15c8a96f5c0f18c40d3855fc Mon Sep 17 00:00:00 2001 From: uc-apa Date: Thu, 7 May 2020 11:26:39 +0530 Subject: [PATCH 17/19] formatting .m files --- .../ios/Classes/FlutterWebView.m | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 96a4397d829c..ed9c5cc8b32d 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -110,15 +110,15 @@ - (instancetype)initWithFrame:(CGRect)frame [self applySettings:settings]; // TODO(amirh): return an error if apply settings failed once it's possible to do so. // https://github.com/flutter/flutter/issues/36228 - + NSString* html = args[@"html"]; if ([html isKindOfClass:[NSString class]]) { NSString* baseURLString = args[@"baseUrl"]; if ([baseURLString isKindOfClass:[NSString class]]) { baseURL = [NSURL URLWithString:baseURLString]; - [_webView loadHTMLString:html baseURL: baseURL]; + [_webView loadHTMLString:html baseURL:baseURL]; } else { - [_webView loadHTMLString:html baseURL: nil]; + [_webView loadHTMLString:html baseURL:nil]; } } else { NSString* initialUrl = args[@"initialUrl"]; @@ -130,7 +130,7 @@ - (instancetype)initWithFrame:(CGRect)frame return self; } -NSURL *baseURL = nil; +NSURL* baseURL = nil; - (UIView*)view { return _webView; @@ -199,15 +199,15 @@ - (void)onLoadUrl:(FlutterMethodCall*)call result:(FlutterResult)result { } - (void)onLoadHtml:(FlutterMethodCall*)call result:(FlutterResult)result { - NSString* html = [call arguments][@"html"]; - if ([html isKindOfClass:[NSString class]]) { - if (baseURL != nil) { - [_webView loadHTMLString:html baseURL: baseURL]; - } else { - [_webView loadHTMLString:html baseURL: nil]; - } + NSString* html = [call arguments][@"html"]; + if ([html isKindOfClass:[NSString class]]) { + if (baseURL != nil) { + [_webView loadHTMLString:html baseURL:baseURL]; + } else { + [_webView loadHTMLString:html baseURL:nil]; } - result(nil); + } + result(nil); } - (void)onCanGoBack:(FlutterMethodCall*)call result:(FlutterResult)result { From 9cd035e7852826d256e0955721b4d2a48ec29bd6 Mon Sep 17 00:00:00 2001 From: uc-apa Date: Thu, 7 May 2020 12:27:54 +0530 Subject: [PATCH 18/19] version incremented --- packages/webview_flutter/CHANGELOG.md | 4 ++++ packages/webview_flutter/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 36dc43fd0337..4733afdb7239 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.21+1 + +* static html and baseUrl support. + ## 0.3.21 * Enable programmatic scrolling using Android's WebView.scrollTo & iOS WKWebView.scrollView.contentOffset. diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index 26e4fbc26edc..6b4779dc8680 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 0.3.21 +version: 0.3.21+1 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: From 07caaee690fa9bf0bc1221f662b74a89e5be5965 Mon Sep 17 00:00:00 2001 From: Akshay Pauranik Date: Wed, 19 Aug 2020 13:15:25 +0530 Subject: [PATCH 19/19] baseurl file permission issue on real ios device --- packages/webview_flutter/ios/Classes/FlutterWebView.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index ed9c5cc8b32d..b1263bbef6e3 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -116,6 +116,11 @@ - (instancetype)initWithFrame:(CGRect)frame NSString* baseURLString = args[@"baseUrl"]; if ([baseURLString isKindOfClass:[NSString class]]) { baseURL = [NSURL URLWithString:baseURLString]; + if (@available(iOS 9.0, *)) { + [_webView loadFileURL:baseURL allowingReadAccessToURL:baseURL]; + } else { + // Fallback on earlier versions + } [_webView loadHTMLString:html baseURL:baseURL]; } else { [_webView loadHTMLString:html baseURL:nil];