📜  info plist flutter 使用 web 视图 (1)

📅  最后修改于: 2023-12-03 15:15:49.490000             🧑  作者: Mango

Info.plist | Flutter 使用 Web 视图

简介

在 Flutter 中,开发者可以使用内置的 Web 视图来展示网页内容,这对于需要展示外部网页的应用程序非常有用。在 iOS 应用开发中,需要在 Info.plist 文件中添加 NSAppTransportSecurity 项来允许应用程序使用 web 视图。本文将介绍如何在 Flutter 中使用 web 视图以及如何在 Info.plist 文件中添加 NSAppTransportSecurity 项。

使用 Web 视图

使用 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 代码。

添加 NSAppTransportSecurity 项

如果应用程序需要在 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 属性指定要加载的域名和协议。