Flutter 应用更新功能实现代码优化
void updateappx() async {
var value = await getApplicationDocumentsDirectory();
var pathx = value.path;
File file = File('$pathx/version.txt');
if (await file.exists()) {
String localVersion = await file.readAsString();
var dio = Dio();
var value = await dio.get('https://update-nepucouseupdate-bmgwsddxxl.cn-hongkong.fcapp.run/update');
String version = value.data[0]['version'];
if (version != Global.version && version != localVersion) {
await Dialogs.materialDialog(
color: Colors.white,
msg: '要下载吗?',
title: '有新版本啦,版本号是$version
${value.data[0]['description']}',
lottieBuilder: Lottie.asset(
'assets/rockert-new.json',
fit: BoxFit.contain,
),
context: context,
actions: [
IconButton(
onPressed: () {
file.writeAsString(version);
Navigator.pop(context);
},
icon: Icon(Icons.cancel_outlined),
),
IconButton(
onPressed: () async {
file.writeAsString(version);
Navigator.pop(context);
if (Platform.isAndroid) {
ProgressDialog pd = ProgressDialog(context: context);
pd.show(
max: 100,
msg: '准备下载更新...',
msgMaxLines: 5,
completed: Completed(
completedMsg: "下载完成!",
completedImage: AssetImage("assets/completed.gif"),
completionDelay: 2500,
));
await EasyAppInstaller.instance.downloadAndInstallApk(
fileUrl: value.data[0]['link'],
fileDirectory: "updateApk",
fileName: "newApk.apk",
explainContent: "快去开启权限!!!",
onDownloadingListener: (progress) {
if (progress < 100) {
pd.update(value: progress.toInt(), msg: '安装包正在下载...');
} else {
pd.update(value: progress.toInt(), msg: '安装包下载完成...');
}
},
onCancelTagListener: (cancelTag) {
_cancelTag = cancelTag;
},
);
} else {
Clipboard.setData(ClipboardData(
text: 'https://wwai.lanzouy.com/b02pwpe5e?password=4huv'));
AchievementView(context,
title: "复制成功",
subTitle: '请手动去浏览器粘贴网址,密码是4huv,请手动下载对应您的平台',
icon: Icon(
Icons.insert_emoticon,
color: Colors.white,
),
color: Colors.green,
duration: Duration(seconds: 15),
isCircle: true, listener: (status) {
print(status);
})..show();
}
},
icon: Icon(Icons.check),
),
],
);
}
} else {
await file.create();
if (await file.exists()) {
var dio = Dio();
var value = await dio.get('https://update-nepucouseupdate-bmgwsddxxl.cn-hongkong.fcapp.run/update');
String version = value.data[0]['version'];
if (version != Global.version && version != localVersion) {
await Dialogs.materialDialog(
color: Colors.white,
msg: '要下载吗?',
title: '有新版本啦,版本号是$version
${value.data[0]['description']}',
lottieBuilder: Lottie.asset(
'assets/rockert-new.json',
fit: BoxFit.contain,
),
context: context,
actions: [
IconButton(
onPressed: () {
file.writeAsString(version);
Navigator.pop(context);
},
icon: Icon(Icons.cancel_outlined),
),
IconButton(
onPressed: () async {
Navigator.pop(context);
ProgressDialog pd = ProgressDialog(context: context);
pd.show(
max: 100,
msg: '准备下载更新...',
msgMaxLines: 5,
completed: Completed(
completedMsg: "下载完成!",
completedImage: AssetImage("assets/completed.gif"),
completionDelay: 2500,
));
await EasyAppInstaller.instance.downloadAndInstallApk(
fileUrl: value.data[0]['link'],
fileDirectory: "updateApk",
fileName: "newApk.apk",
explainContent: "快去开启权限!!!",
onDownloadingListener: (progress) {
if (progress < 100) {
pd.update(value: progress.toInt(), msg: '安装包正在下载...');
} else {
file.writeAsString(version);
pd.update(value: progress.toInt(), msg: '安装包下载完成...');
}
},
onCancelTagListener: (cancelTag) {
_cancelTag = cancelTag;
},
);
},
icon: Icon(Icons.check),
),
],
);
}
}
}
}
原文地址: http://www.cveoy.top/t/topic/ojHt 著作权归作者所有。请勿转载和采集!