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('检查更新中...'),
),
);
}
}