Flutter应用升级管理插件tp_upgrade_lib的使用

tp_upgrade_lib flutter sdk 3.19.6

仅适用于Android平台。


Getting Started(开始使用)

在您的 pubspec.yaml 文件中添加最新的库,然后根据示例代码进行配置。


示例代码

以下是完整的示例代码,展示如何使用 tp_upgrade_lib 插件来实现应用升级功能。

示例代码文件:example/lib/main.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:tp_upgrade_lib/tp_update_widget.dart'; // 引入升级弹窗组件
import 'package:tp_upgrade_lib/tp_upgrade_lib.dart'; // 引入核心库

import 'tp_update_util.dart'; // 自定义工具类

void main() async {
  WidgetsFlutterBinding.ensureInitialized(); // 初始化Flutter绑定
  runApp(MyApp()); // 启动应用
}

// 主应用类
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(), // 设置主页
    );
  }
}

// 主页面类
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

// 主页面状态类
class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.blue, // 设置背景颜色
        title: const Text('插件示例应用'), // 设置标题
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center, // 主轴居中对齐
        children: [
          // 更新按钮
          MaterialButton(
            onPressed: () => onDownTap(context), // 点击事件
            child: Text('点击更新', style: TextStyle(color: Colors.white)), // 按钮文字
            color: Colors.blue, // 按钮颜色
          ),
        ],
      ),
    );
  }

  // 点击更新按钮时触发的方法
  onDownTap(BuildContext context) {
    TpUpdateUtil.checkVs(context); // 调用检查更新方法
  }
}

使用说明

  1. 添加依赖
    pubspec.yaml 文件中添加以下依赖:

    dependencies:
      tp_upgrade_lib: ^3.19.6

    然后执行 flutter pub get 安装依赖。

  2. 初始化
    main() 方法中调用 WidgetsFlutterBinding.ensureInitialized() 并启动应用。

  3. 创建主页面
    创建一个包含按钮的页面,点击按钮时调用 TpUpdateUtil.checkVs(context) 来检查是否有新版本。

  4. 自定义工具类
    可以通过自定义工具类 tp_update_util.dart 配置具体的更新逻辑。例如:

    import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';
    
    class TpUpdateUtil {
      static void checkVs(BuildContext context) {
        TpUpgradeLib.checkVersion(context, (result) {
          if (result != null && result['isNewVersion'] == true) {
            // 显示更新弹窗
            TpUpdateWidget.showUpdateDialog(context, result);
          } else {
            print('当前已是最新版本');
          }
        });
      }
    }
1 回复

更多关于Flutter应用升级管理插件tp_upgrade_lib的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


tp_upgrade_lib 是一个用于 Flutter 应用升级管理的插件,它可以帮助开发者轻松实现应用的版本检测、下载和安装等功能。以下是如何使用 tp_upgrade_lib 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  tp_upgrade_lib: ^1.0.0  # 请使用最新版本

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

2. 初始化插件

在你的 Dart 代码中,首先需要初始化 tp_upgrade_lib 插件。通常可以在 main.dart 文件中进行初始化:

import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  await TPUpgradeLib.init(
    appId: 'your_app_id',  // 你的应用ID
    baseUrl: 'https://your-upgrade-server.com',  // 升级服务器的URL
  );

  runApp(MyApp());
}

3. 检查更新

在需要检查更新的地方,调用 checkForUpdate 方法来检查是否有新版本可用:

import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';

void checkUpdate() async {
  try {
    final updateInfo = await TPUpgradeLib.checkForUpdate();
    
    if (updateInfo != null && updateInfo.hasUpdate) {
      // 如果有更新,显示更新对话框
      showUpdateDialog(updateInfo);
    } else {
      // 没有更新
      print('当前已是最新版本');
    }
  } catch (e) {
    print('检查更新失败: $e');
  }
}

void showUpdateDialog(UpdateInfo updateInfo) {
  // 显示更新对话框,提示用户下载新版本
  // 你可以使用 `updateInfo.downloadUrl` 来获取下载链接
  // 使用 `updateInfo.versionName` 来显示新版本号
}

4. 下载并安装更新

如果用户选择更新,你可以使用 downloadAndInstall 方法来下载并安装新版本:

import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';

void downloadAndInstallUpdate(String downloadUrl) async {
  try {
    await TPUpgradeLib.downloadAndInstall(downloadUrl);
  } catch (e) {
    print('下载或安装失败: $e');
  }
}

5. 处理下载进度

如果你需要显示下载进度,可以使用 TPUpgradeLib 提供的进度回调:

import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';

void downloadWithProgress(String downloadUrl) async {
  try {
    await TPUpgradeLib.downloadAndInstall(
      downloadUrl,
      onProgress: (progress) {
        print('下载进度: $progress%');
      },
    );
  } catch (e) {
    print('下载或安装失败: $e');
  }
}

6. 处理安装结果

你还可以监听安装结果,以便在安装完成后执行一些操作:

import 'package:tp_upgrade_lib/tp_upgrade_lib.dart';

void installWithCallback(String downloadUrl) async {
  try {
    await TPUpgradeLib.downloadAndInstall(
      downloadUrl,
      onInstallComplete: () {
        print('安装完成');
      },
    );
  } catch (e) {
    print('下载或安装失败: $e');
  }
}

7. 其他功能

tp_upgrade_lib 还提供了其他一些功能,例如:

  • 强制更新:你可以通过 UpdateInfo 中的 isForceUpdate 字段来判断是否需要强制更新。
  • 自定义更新对话框:你可以根据 UpdateInfo 中的信息自定义更新对话框的样式和行为。

8. 注意事项

  • Android:在 Android 平台上,你需要确保应用有权限访问存储空间,以便下载和安装 APK 文件。
  • iOS:在 iOS 平台上,应用更新通常通过 App Store 进行,因此 tp_upgrade_lib 主要用于检测新版本并引导用户前往 App Store 更新。

9. 示例代码

以下是一个完整的示例代码,展示了如何使用 tp_upgrade_lib 插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await TPUpgradeLib.init(
    appId: 'your_app_id',
    baseUrl: 'https://your-upgrade-server.com',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('App Upgrade Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: checkUpdate,
            child: Text('Check for Update'),
          ),
        ),
      ),
    );
  }
}

void checkUpdate() async {
  try {
    final updateInfo = await TPUpgradeLib.checkForUpdate();
    
    if (updateInfo != null && updateInfo.hasUpdate) {
      showUpdateDialog(updateInfo);
    } else {
      print('当前已是最新版本');
    }
  } catch (e) {
    print('检查更新失败: $e');
  }
}

void showUpdateDialog(UpdateInfo updateInfo) {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text('发现新版本 ${updateInfo.versionName}'),
        content: Text('是否立即更新?'),
        actions: <Widget>[
          TextButton(
            onPressed: () {
              Navigator.of(context).pop();
            },
            child: Text('取消'),
          ),
          TextButton(
            onPressed: () {
              Navigator.of(context).pop();
              downloadAndInstallUpdate(updateInfo.downloadUrl);
            },
            child: Text('更新'),
          ),
        ],
      );
    },
  );
}

void downloadAndInstallUpdate(String downloadUrl) async {
  try {
    await TPUpgradeLib.downloadAndInstall(
      downloadUrl,
      onProgress: (progress) {
        print('下载进度: $progress%');
      },
      onInstallComplete: () {
        print('安装完成');
      },
    );
  } catch (e) {
    print('下载或安装失败: $e');
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!