📅  最后修改于: 2023-12-03 15:15:49.490000             🧑  作者: Mango
在 Flutter 中,开发者可以使用内置的 Web 视图来展示网页内容,这对于需要展示外部网页的应用程序非常有用。在 iOS 应用开发中,需要在 Info.plist 文件中添加 NSAppTransportSecurity 项来允许应用程序使用 web 视图。本文将介绍如何在 Flutter 中使用 web 视图以及如何在 Info.plist 文件中添加 NSAppTransportSecurity 项。
使用 Flutter 内置的 Web 视图非常简单,只需要在 Flutter 中使用 WebView
组件即可,代码如下:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewExample extends StatelessWidget {
final String url;
const WebViewExample({Key key, this.url}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(url)),
body: WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
),
);
}
}
使用上述代码,可以在 Flutter 中展示外部网页,并且可以通过 WebView 组件的 initialUrl
属性指定要展示的网页地址。JavascriptMode.unrestricted
属性可以使 WebView 组件可以执行 JavaScript 代码。
如果应用程序需要在 iOS 平台上使用 web 视图,需要在 Info.plist 文件中添加 NSAppTransportSecurity 项。代码如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
上述代码将 NSAllowsArbitraryLoads 属性设置为 true,这意味着应用程序可以加载任何协议的网页内容。如果应用程序需要加载指定协议的网页内容,可以使用以下代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
上述代码将 NSAllowsArbitraryLoads 属性设置为 false,这意味着应用程序只能加载指定协议的网页内容。在这个例子中,应用程序可以加载 example.com 域名下的任何内容,并且可以加载使用 http 协议的内容,TLS 版本必须大于等于 TLSv1.1。
在 Flutter 中使用 web 视图可以很方便地展示外部网页内容。在 iOS 平台上,需要在 Info.plist 文件中添加 NSAppTransportSecurity 项来允许应用程序使用 web 视图。如果需要加载任何协议的网页内容,可以将 NSAllowsArbitraryLoads 属性设置为 true;如果只需要加载指定协议的网页内容,可以使用 NSExceptionDomains 属性指定要加载的域名和协议。