diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 7f30ad31bdec..2f234e622e10 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -50,6 +50,16 @@ - (instancetype)initWithFrame:(CGRect)frame }]; NSDictionary* settings = args[@"settings"]; [self applySettings:settings]; + + NSString* userAgent = args[@"userAgent"]; + if (userAgent && ![userAgent isKindOfClass:[NSNull class]]) { + if (@available(iOS 9.0, *)) { + _webView.customUserAgent = userAgent; + } else { + [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent" : userAgent}]; + } + } + NSString* initialUrl = args[@"initialUrl"]; if (initialUrl && ![initialUrl isKindOfClass:[NSNull class]]) { [self loadUrl:initialUrl]; diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index 43f88b6892e4..71a16551a5eb 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -33,6 +33,7 @@ class WebView extends StatefulWidget { this.initialUrl, this.javascriptMode = JavascriptMode.disabled, this.gestureRecognizers, + this.userAgent, }) : assert(javascriptMode != null), super(key: key); @@ -56,6 +57,9 @@ class WebView extends StatefulWidget { /// Whether Javascript execution is enabled. final JavascriptMode javascriptMode; + /// The user agent string. + final String userAgent; + @override State createState() => _WebViewState(); } @@ -126,21 +130,24 @@ class _WebViewState extends State { } class _CreationParams { - _CreationParams({this.initialUrl, this.settings}); + _CreationParams({this.initialUrl, this.userAgent, this.settings}); static _CreationParams fromWidget(WebView widget) { return _CreationParams( initialUrl: widget.initialUrl, settings: _WebSettings.fromWidget(widget), + userAgent: widget.userAgent, ); } final String initialUrl; + final String userAgent; final _WebSettings settings; Map toMap() { return { 'initialUrl': initialUrl, + 'userAgent': userAgent, 'settings': settings.toMap(), }; }