Flutter应用升级插件app_upgrade_liupack的使用

Flutter应用升级插件app_upgrade_liupack的使用

app_upgrade 版本更新功能

代码来源:hgg_app_upgrade,使用方法保持一致,只是对部分依赖进行了更新处理。

示例代码

import 'dart:io';

import 'package:app_upgrade_liupack/app_upgrade.dart';
import 'package:flutter/material.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: const Home(),
      ),
    );
  }
}

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  static const apkUrl =
      'https://d4608e3e07fd93f5f4d35ba6b67a5876.dlied1.cdntips.net/downv6.qq.com/qqweb/QQ_1/android_apk/Android_8.9.28.10155_537147618_64.apk?mkey=65811a1c716336ed&f=dc62&cip=113.99.16.24&proto=https&access_type=&tx_domain=down.qq.com&tx_path=%2Fqqweb%2F&tx_id=6c9382a8c8';
  AppInfo? _appInfo;
  String _installMarkets = '';

  @override
  void initState() {
    _getAppInfo();
    super.initState();
    _getInstallMarket();
  }

  Future<AppUpgradeInfo> _checkVersion() async {
    return Future.delayed(const Duration(seconds: 1), () {
      return AppUpgradeInfo(
        title: '新版本V1.1.1',
        apkDownloadUrl: apkUrl,
        contents: [
          '1、支持立体声蓝牙耳机,同时改善配对性能',
          '2、提供屏幕虚拟键盘',
          '3、更简洁更流畅,使用起来更快',
          '4、修复一些软件在使用时自动退出bug',
          '5、新增加了分类查看功能'
        ],
        force: false,
      );
    });
  }

  _getAppInfo() async {
    var appInfo = await AppUpgrade.appInfo;
    setState(() {
      _appInfo = appInfo;
    });
  }

  _getInstallMarket() async {
    if (Platform.isAndroid) {
      List<String> marketList = await AppUpgrade.getInstallMarket();
      for (var f in marketList) {
        _installMarkets += '$f,';
      }
    }
  }

  _checkAppUpgrade() {
    AppUpgrade.appUpgrade(
      context,
      _checkVersion(),
      cancelText: '以后再说',
      okText: '马上升级',
      iosAppId: 'id444934666',
      // appMarketInfo: AppMarket.tencent,
      okBackgroundColors: [const Color(0xFF765CFE), const Color(0xFF765CFE)],
      progressBarColor: const Color(0xFF5A46BE).withOpacity(.4),
      isDark: true,
      onCancel: () {
        debugPrint('onCancel');
      },
      onOk: () {
        debugPrint('onOk');
      },
      downloadProgress: (count, total) {
        // debugPrint('count:$count,total:$total');
      },
      downloadStatusChange: (status, {dynamic error}) {
        debugPrint('status:$status,error:$error');
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('packageName:${_appInfo?.packageName}'),
        Text('versionName:${_appInfo?.versionName}'),
        Text('versionCode:${_appInfo?.versionCode}'),
        if (Platform.isAndroid) Text('安装的应用商店:$_installMarkets'),
        ElevatedButton(
          onPressed: _checkAppUpgrade,
          child: const Text('显示更新弹窗'),
        ),
        if (Platform.isAndroid)
          MaterialButton(
            onPressed: () {
              AppUpgrade.apkDownloadPath.then((value) {
                debugPrint("apk is $value");
                return AppUpgrade.installAppForAndroid(value);
              });
            },
            child: const Text('直接安装'),
          )
      ],
    );
  }
}

使用说明

初始化应用信息

_getAppInfo() async {
  var appInfo = await AppUpgrade.appInfo;
  setState(() {
    _appInfo = appInfo;
  });
}

该方法用于获取当前应用的信息(如包名、版本号等)。

获取已安装的应用商店

_getInstallMarket() async {
  if (Platform.isAndroid) {
    List<String> marketList = await AppUpgrade.getInstallMarket();
    for (var f in marketList) {
      _installMarkets += '$f,';
    }
  }
}

该方法用于获取设备上已安装的应用商店列表。

检查并显示更新弹窗

_checkAppUpgrade() {
  AppUpgrade.appUpgrade(
    context,
    _checkVersion(),
    cancelText: '以后再说',
    okText: '马上升级',
    iosAppId: 'id444934666',
    // appMarketInfo: AppMarket.tencent,
    okBackgroundColors: [const Color(0xFF765CFE), const Color(0xFF765CFE)],
    progressBarColor: const Color(0xFF5A46BE).withOpacity(.4),
    isDark: true,
    onCancel: () {
      debugPrint('onCancel');
    },
    onOk: () {
      debugPrint('onOk');
    },
    downloadProgress: (count, total) {
      // debugPrint('count:$count,total:$total');
    },
    downloadStatusChange: (status, {dynamic error}) {
      debugPrint('status:$status,error:$error');
    },
  );
}

该方法用于检查是否有新版本,并显示一个更新弹窗。如果用户选择更新,则会下载并安装新版本的应用。

直接安装APK

MaterialButton(
  onPressed: () {
    AppUpgrade.apkDownloadPath.then((value) {
      debugPrint("apk is $value");
      return AppUpgrade.installAppForAndroid(value);
    });
  },
  child: const Text('直接安装'),
)

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

1 回复

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


app_upgrade_liupack 是一个用于 Flutter 应用升级的插件,它可以帮助开发者实现应用内更新的功能。通过这个插件,你可以轻松地检查应用是否有新版本,并提示用户进行更新。以下是使用 app_upgrade_liupack 的基本步骤和示例代码。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  app_upgrade_liupack: ^1.0.0  # 请根据实际情况使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入 app_upgrade_liupack 插件:

import 'package:app_upgrade_liupack/app_upgrade_liupack.dart';

3. 检查更新并提示用户

你可以使用 AppUpgrade 类来检查应用是否有新版本,并提示用户进行更新。以下是一个简单的示例:

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

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

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

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  void initState() {
    super.initState();
    checkForUpdate();
  }

  Future<void> checkForUpdate() async {
    // 设置应用的当前版本
    String currentVersion = '1.0.0';

    // 设置应用的最新版本
    String latestVersion = '1.1.0';

    // 设置应用商店的URL
    String appStoreUrl = 'https://play.google.com/store/apps/details?id=com.example.app';

    // 检查是否需要更新
    if (await AppUpgrade.shouldUpdate(currentVersion, latestVersion)) {
      // 显示更新对话框
      AppUpgrade.showUpdateDialog(
        context: context,
        appStoreUrl: appStoreUrl,
        title: '新版本可用',
        content: '发现新版本,是否立即更新?',
        confirmText: '更新',
        cancelText: '取消',
      );
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text('检查更新中...'),
      ),
    );
  }
}
回到顶部