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

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

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

Upgrader 插件简介

codecov pub package GitHub Stars Buy me a coffee Twitter Follow

Upgrader 是一个用于在Flutter应用程序中提示用户升级到最新版本的应用商店插件。当应用商店中有新版本可用时,它会显示一个简单的弹出提示或卡片。

平台支持

平台 自动支持? Appcast 支持?
ANDROID ✅ Yes ✅ Yes
IOS ✅ Yes ✅ Yes
LINUX ❌ No ✅ Yes
MACOS ❌ No ✅ Yes
WEB ❌ No ✅ Yes
WINDOWS ❌ No ✅ Yes

Widgets

Upgrader 提供了两种类型的组件:UpgradeAlertUpgradeCard。前者用于显示弹出提示,后者用于显示内联材料设计卡片。

  • UpgradeAlert: 显示弹出提示框。
  • UpgradeCard: 显示内联材料设计卡片。

用户可以看到三个按钮:IGNORE(忽略)、LATER(稍后)和 UPDATE NOW(立即更新)。点击 IGNORE 后,该版本将不再显示提示;点击 LATER 只是关闭提示框;点击 UPDATE NOW 将跳转至应用商店进行更新。

示例代码

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

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Only call clearSavedSettings() during testing to reset internal values.
  await Upgrader.clearSavedSettings(); // REMOVE this for release builds

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Upgrader Example',
      home: UpgradeAlert(
        child: Scaffold(
          appBar: AppBar(title: const Text('Upgrader Example')),
          body: const Center(child: Text('Checking...')),
        ),
      ),
    );
  }
}

自定义样式

你还可以通过修改 MaterialApp 中的主题来自定义对话框和卡片的样式。例如,设置 dialogStyle 参数为 UpgradeDialogStyle.cupertino 来显示 Cupertino 风格的对话框:

body: UpgradeAlert(
  dialogStyle: UpgradeDialogStyle.cupertino,
  child: Center(child: Text('Checking...')),
),

最低版本要求

可以通过在应用商店描述中添加特定格式的文本来强制执行最低版本要求:

  • Android Play Store:

    [Minimum supported app version: 1.2.3]
    
  • iOS App Store:

    [:mav: 1.2.3]
    

这将隐藏“忽略”和“稍后”按钮,并强制用户更新到指定版本。

其他功能

  • 语言本地化:支持多种语言,并允许自定义字符串。
  • Appcast:通过RSS Feed远程配置最新版本信息。
  • Go Router:与路由管理库兼容。
  • 语义化版本控制:遵循语义化版本规则。

注意事项

  • 在 Android 上,确保在 AndroidManifest.xml 文件中添加必要的查询权限以解决点击“立即更新”按钮时可能出现的问题。
  • 对于 iOS 应用,如果不在美国应用商店,则需要显式指定国家代码。

更多详细信息请参考官方文档及示例项目。如果你遇到任何问题,请随时提交 issue 或者提出 pull request。希望这个插件能帮助你更方便地管理应用的版本升级!


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

1 回复

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


当然,关于Flutter应用中的升级管理插件 upgrader 的使用,下面是一个基本的代码示例,展示了如何集成和使用这个插件来管理应用的版本升级。

首先,确保你已经在 pubspec.yaml 文件中添加了 upgrader 依赖:

dependencies:
  flutter:
    sdk: flutter
  upgrader: ^x.y.z  # 请替换为最新版本号

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

接下来,在你的 Flutter 项目中,你可以按照以下步骤实现版本升级管理:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:upgrader/upgrader.dart';
  1. 定义升级逻辑

你可以创建一个函数来检查并显示升级对话框。以下是一个简单的示例:

Future<void> checkForUpdates() async {
  // 配置Upgrader
  final upgrader = Upgrader(
    context: context,
    iOSAppId: 'your_ios_app_id',  // 替换为你的iOS应用ID
    androidPackageName: 'your.android.package.name',  // 替换为你的Android包名
    mandatoryUpdate: false,  // 是否为强制更新
    openStore: true,  // 是否在点击更新按钮时打开应用商店
    alertStyle: AlertStyle.BOTTOM_SHEET,  // 升级提示的样式
    ignoreVersion: null,  // 忽略某个特定版本
    title: '新版本更新',
    cancelButtonText: '暂不更新',
    okButtonText: '立即更新',
    description: Text('发现新版本,点击立即更新获取最新功能!'),
    mandatoryUpdateMessage: Text('这是一个强制更新,请立即更新应用。'),
    versionChanged: (newVersion) {
      // 在这里处理版本变化逻辑,比如记录日志等
      print("新版本号: $newVersion");
    },
    onUpgrade: () async {
      // 在这里处理升级后的逻辑,比如启动特定页面
      print("用户同意升级");
      // 例如:Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => NewVersionScreen()));
    },
    onCancel: () {
      // 用户取消升级时的逻辑
      print("用户取消升级");
    },
  );

  // 检查是否有新版本
  final versionCheck = await upgrader.checkVersion();
  if (versionCheck) {
    // 显示升级对话框
    await upgrader.showUpgradeDialog();
  }
}
  1. 在适当的位置调用 checkForUpdates 函数

你可以在应用启动时、某个按钮点击时或者其它你认为合适的地方调用这个函数。例如,在 MyAppinitState 中调用:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Upgrader Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              await checkForUpdates();
            },
            child: Text('检查更新'),
          ),
        ),
      ),
    );
  }
}

以上代码示例展示了如何使用 upgrader 插件来管理 Flutter 应用的版本升级。你可以根据自己的需求调整配置和逻辑。确保在实际应用中,替换掉示例中的 your_ios_app_idyour.android.package.name 为你的实际值。

回到顶部