Flutter应用更新管理插件update_handler的使用

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

Flutter应用更新管理插件update_handler的使用

本包可用于检查并保持您的应用程序为最新版本。

特性

  • 自动重定向到App Store/Play Store
  • 强制更新(在强制更新时,弹出窗口不能被关闭或取消)
  • Cupertino/Material设计

开始使用

无需任何先决条件。 但是,您可以手动添加Android包名称和iOS App ID。(非必需)

UpdateHandler.androidAppId = "nic.goi.aarogyasetu";
UpdateHandler.iosAppId = "1505825357";

使用方法

您只需要传递最新的构建号、上次强制更新的构建号、BuildContext。标题和内容是可选的。

UpdateHandler().isUpdateAvailable(latestBuildNo: 11, lastForceBuildNo: 10, context: context, onNotNowClick: () {});

或者:

UpdateHandler().isUpdateAvailable(
  latestBuildNo: 11,
  lastForceBuildNo: 10,
  context: context,
  onNotNowClick: () {},
  title: "立即更新",
  content: "新版本已上线,请尽快更新"
);

完整示例代码

以下是完整的示例代码,展示了如何使用update_handler插件来实现应用更新管理。

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

void main() {
  runApp(const MyApp());
  // 设置Android和iOS的应用ID
  UpdateHandler.androidAppId = "nic.goi.aarogyasetu";
  UpdateHandler.iosAppId = "1505825357";
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // 这个小部件是你的应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'UPDATE HANDLER Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 强制更新按钮
            ElevatedButton(
              onPressed: () {
                UpdateHandler().isUpdateAvailable(
                  latestBuildNo: 10,
                  lastForceBuildNo: 10,
                  context: context,
                  onNotNowClick: () {},
                );
              },
              child: const Text("强制更新弹窗"),
            ),
            // 软更新按钮
            ElevatedButton(
              onPressed: () {
                UpdateHandler().isUpdateAvailable(
                  latestBuildNo: 10,
                  lastForceBuildNo: 8,
                  context: context,
                  onNotNowClick: () {},
                  title: "立即更新",
                  content: "新版本已上线,请尽快更新",
                );
              },
              child: const Text("软更新弹窗"),
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用update_handler插件进行应用更新管理的代码示例。这个插件通常用于检查和提示用户更新应用程序。请注意,具体的实现可能因插件版本和具体需求而有所不同。以下示例基于一个假定的插件版本。

1. 添加依赖

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

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

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

2. 初始化插件

在你的主应用文件(通常是main.dart)中,初始化并配置update_handler插件。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化UpdateHandler
    UpdateHandler.init(
      androidAppId: 'your_android_app_id',  // 替换为你的Android应用ID
      iOSAppId: 'your_ios_app_id',          // 替换为你的iOS应用ID
      forceUpdate: false,                   // 是否强制更新
      showDialog: true,                     // 是否显示更新对话框
      updateServerUrl: 'https://your-update-server.com/api/check-update',  // 替换为你的更新服务器URL
      onNewVersion: (version) {
        // 当有新版本时的回调
        print('New version available: $version');
      },
      onUpdateCompleted: () {
        // 更新完成后的回调
        print('Update completed');
      },
      onUpdateFailed: () {
        // 更新失败时的回调
        print('Update failed');
      },
    );

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text('Check for updates automatically via UpdateHandler'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 手动检查更新
          UpdateHandler.checkForUpdates();
        },
        tooltip: 'Check for Updates',
        child: Icon(Icons.update),
      ),
    );
  }
}

3. 配置服务器API

你的更新服务器API应该返回一个JSON对象,包含最新版本信息。例如:

{
  "versionCode": 2,
  "versionName": "1.1.0",
  "url": "https://your-update-server.com/path/to/your/apk/file.apk",
  "releaseNotes": "This is a new version with bug fixes and improvements."
}

4. 处理更新逻辑

插件会自动处理下载和安装更新的逻辑(对于Android)。对于iOS,你可能需要在App Store中手动发布新版本,并引导用户前往App Store更新。

注意事项

  1. 权限:确保你的Android应用具有下载和安装APK文件的必要权限。
  2. 测试:在发布到生产环境之前,务必在测试环境中充分测试更新功能。
  3. 用户体验:考虑在提示用户更新时提供友好的用户体验,比如允许用户稍后更新或取消更新。

以上代码提供了一个基本的框架,你可以根据具体需求进行进一步的定制和扩展。

回到顶部