Flutter网页视图插件webview_pro_android的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter网页视图插件webview_pro_android的使用

webview_pro_androidflutter_webview_pro 插件的 Android 实现。它允许开发者在 Flutter 应用中嵌入高性能的 WebView 组件。

使用方法

此插件是被官方推荐的插件(endorsed federated plugin),因此你可以直接使用 flutter_webview_pro,而无需手动引入 webview_pro_android。当你使用 flutter_webview_pro 时,该插件会自动包含在你的项目中。

安装依赖

首先,在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_webview_pro: ^latest_version

然后运行以下命令以更新依赖项:

flutter pub get

初始化 WebView

以下是一个完整的示例代码,展示如何在 Flutter 中使用 webview_pro_android 插件加载网页。

示例代码

// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// ignore_for_file: public_member_api_docs

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_webview_pro/flutter_webview_pro.dart';

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

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

class WebViewExample extends StatefulWidget {
  @override
  _WebViewExampleState createState() => _WebViewExampleState();
}

class _WebViewExampleState extends State<WebViewExample> {
  final Completer<WebViewController> _controller = Completer<WebViewController>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('WebView Pro Example'),
      ),
      body: WebviewScaffold(
        url: 'https://www.example.com', // 替换为目标网页的 URL
        withZoom: true, // 是否支持缩放
        withLocalStorage: true, // 是否启用本地存储
        hidden: false, // 是否隐藏 WebView
        initialChild: Center(child: CircularProgressIndicator()), // 加载前显示的占位符
        onProgress: (int progress) {
          print('WebView is loading (progress : $progress%)');
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          final WebViewController controller = await _controller.future;
          final String url = await controller.currentUrl();
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text('Current URL: $url')),
          );
        },
        child: Icon(Icons.info),
      ),
    );
  }
}

代码说明

  1. WebviewScaffold: 这是 flutter_webview_pro 提供的主要组件,用于嵌入 WebView。

    • url: 指定要加载的网页地址。
    • withZoom: 是否支持页面缩放。
    • withLocalStorage: 是否启用本地存储功能。
    • hidden: 是否隐藏 WebView。
    • initialChild: 在 WebView 加载完成之前显示的占位符。
    • onProgress: 监听 WebView 的加载进度。
  2. FloatingActionButton: 点击按钮后,获取当前 WebView 的 URL 并显示在 SnackBar 中。

运行效果

运行上述代码后,应用将加载指定的网页,并在屏幕底部显示一个按钮。点击按钮后,会弹出一个 SnackBar 显示当前加载的网页地址。

贡献指南

如果想为该插件贡献代码或修复问题,请参考以下步骤:

  1. 通信层生成: 该插件使用 pigeon 工具生成 Flutter 和宿主平台之间的通信层。通信接口定义在 pigeons/android_webview.dart 文件中。修改接口后,可以通过运行以下脚本重新生成通信层:

    ./generatePigeons.sh
  2. 测试工具: 该插件还使用 mockito 来生成测试所需的 Mock 对象。生成 Mock 对象的命令如下:

    flutter packages pub run build_runner build --delete-conflicting-outputs

更多关于Flutter网页视图插件webview_pro_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网页视图插件webview_pro_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


webview_pro_android 是一个用于在 Flutter 应用中嵌入 WebView 的插件。它基于 Android 的 WebView 组件,并提供了丰富的功能和自定义选项。以下是如何在 Flutter 项目中使用 webview_pro_android 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 webview_pro_android 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  webview_pro_android: ^1.0.0  # 请确保使用最新版本

然后,运行 flutter pub get 以获取依赖。

2. 导入插件

在需要使用 WebView 的 Dart 文件中导入插件:

import 'package:webview_pro_android/webview_pro_android.dart';

3. 创建 WebView 组件

使用 WebView 组件来嵌入网页。以下是一个简单的示例:

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

class WebViewExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('WebView Example'),
      ),
      body: WebView(
        initialUrl: 'https://www.example.com',
        javascriptMode: JavascriptMode.unrestricted,
      ),
    );
  }
}

4. 运行应用

WebViewExample 作为应用的入口页面,然后运行应用。你应该能够看到一个嵌入的 WebView,加载指定的 URL。

5. 自定义 WebView

webview_pro_android 提供了许多自定义选项。以下是一些常用的配置:

启用/禁用 JavaScript

WebView(
  initialUrl: 'https://www.example.com',
  javascriptMode: JavascriptMode.unrestricted,  // 启用 JavaScript
)

处理页面加载事件

WebView(
  initialUrl: 'https://www.example.com',
  onPageStarted: (String url) {
    print('Page started loading: $url');
  },
  onPageFinished: (String url) {
    print('Page finished loading: $url');
  },
)

拦截 URL 请求

WebView(
  initialUrl: 'https://www.example.com',
  navigationDelegate: (NavigationRequest request) {
    if (request.url.contains('blocked')) {
      return NavigationDecision.prevent;  // 阻止加载
    }
    return NavigationDecision.navigate;  // 允许加载
  },
)

6. 处理权限

在某些情况下,WebView 可能需要访问设备的摄像头、麦克风等资源。确保在 AndroidManifest.xml 中添加相应的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

7. 调试

你可以在 WebView 中启用调试模式,以便在开发过程中查看控制台日志:

WebView(
  initialUrl: 'https://www.example.com',
  debuggingEnabled: true,
)
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!