Flutter iOS内嵌WebView插件zikzak_inappwebview_ios的使用

Flutter iOS内嵌WebView插件zikzak_inappwebview_ios的使用

zikzak_inappwebview_ios

zikzak_inappwebview_ioszikzak_inappwebview 包的 Apple iOS WKWebView 实现。

使用

这个包是推荐使用的插件(endorsed federated plugin),这意味着你可以直接使用 zikzak_inappwebview。当你这样做时,这个包会自动包含在你的应用中,因此你不需要将其添加到 pubspec.yaml 文件中。

然而,如果你导入这个包以直接使用它的任何API,则应像往常一样将其添加到 pubspec.yaml 文件中。

完整示例Demo

以下是一个完整的示例,展示了如何在Flutter应用中使用 zikzak_inappwebview_ios 插件来加载一个网页。

import 'package:flutter/material.dart';
import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter InAppWebView Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: WebViewPage(),
    );
  }
}

class WebViewPage extends StatefulWidget {
  @override
  _WebViewPageState createState() => _WebViewPageState();
}

class _WebViewPageState extends State<WebViewPage> {
  late InAppWebViewController webViewController;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('InAppWebView Demo'),
      ),
      body: Column(
        children: [
          Expanded(
            child: InAppWebView(
              initialUrlRequest: URLRequest(url: Uri.parse("https://www.example.com")),
              onWebViewCreated: (controller) {
                webViewController = controller;
              },
            ),
          ),
        ],
      ),
    );
  }
}

在这个示例中:

  1. 导入必要的包

    import 'package:flutter/material.dart';
    import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';
    
  2. 创建主应用类 MyApp

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter InAppWebView Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: WebViewPage(),
        );
      }
    }
    
  3. 创建 WebViewPage

    class WebViewPage extends StatefulWidget {
      @override
      _WebViewPageState createState() => _WebViewPageState();
    }
    
  4. 实现 _WebViewPageState

    class _WebViewPageState extends State<WebViewPage> {
      late InAppWebViewController webViewController;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('InAppWebView Demo'),
          ),
          body: Column(
            children: [
              Expanded(
                child: InAppWebView(
                  initialUrlRequest: URLRequest(url: Uri.parse("https://www.example.com")),
                  onWebViewCreated: (controller) {
                    webViewController = controller;
                  },
                ),
              ),
            ],
          ),
        );
      }
    }
    

更多关于Flutter iOS内嵌WebView插件zikzak_inappwebview_ios的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter iOS内嵌WebView插件zikzak_inappwebview_ios的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


zikzak_inappwebview_ios 是一个用于 Flutter 的插件,它允许你在 iOS 应用中嵌入一个 WebView。这个插件基于 WKWebView,提供了丰富的功能来加载和交互网页内容。以下是如何使用 zikzak_inappwebview_ios 插件的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 zikzak_inappwebview_ios 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  zikzak_inappwebview_ios: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 zikzak_inappwebview_ios 插件。

import 'package:zikzak_inappwebview_ios/zikzak_inappwebview_ios.dart';

3. 使用 WebView

你可以在你的 Flutter 应用中使用 InAppWebView 来嵌入一个 WebView。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:zikzak_inappwebview_ios/zikzak_inappwebview_ios.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: WebViewExample(),
    );
  }
}

class WebViewExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('InAppWebView Example'),
      ),
      body: InAppWebView(
        initialUrlRequest: URLRequest(url: Uri.parse('https://flutter.dev')),
        onWebViewCreated: (controller) {
          // WebView 创建后的回调
        },
        onLoadStart: (controller, url) {
          // 页面开始加载时的回调
        },
        onLoadStop: (controller, url) {
          // 页面加载完成时的回调
        },
        onProgressChanged: (controller, progress) {
          // 页面加载进度变化的回调
        },
      ),
    );
  }
}

4. 配置 iOS 项目

由于 zikzak_inappwebview_ios 是基于 WKWebView 的,你需要在 Info.plist 文件中添加以下配置来允许加载网页内容:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
回到顶部