Files
PiliPlus/lib/utils/update.dart
bggRGjQaUbCoE bc3ce66322 opt ui
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-06-22 12:52:26 +08:00

132 lines
4.3 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:io' show Platform;
import 'package:PiliPlus/build_config.dart';
import 'package:PiliPlus/http/api.dart';
import 'package:PiliPlus/http/init.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/storage_key.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
class Update {
// 检查更新
static Future<void> checkUpdate([bool isAuto = true]) async {
if (kDebugMode) return;
SmartDialog.dismiss();
try {
final res = await Request().get(Api.latestApp, uaType: 'mob');
if (res.data is Map || res.data.isEmpty) {
if (!isAuto) {
SmartDialog.showToast('检查更新失败GitHub接口未返回数据请检查网络');
}
return;
}
int latest =
DateTime.parse(res.data[0]['created_at']).millisecondsSinceEpoch ~/
1000;
if (BuildConfig.buildTime >= latest) {
if (!isAuto) {
SmartDialog.showToast('已是最新版本');
}
} else {
SmartDialog.show(
animationType: SmartAnimationType.centerFade_otherSlide,
builder: (context) {
final ThemeData theme = Theme.of(context);
return AlertDialog(
title: const Text('🎉 发现新版本 '),
content: SizedBox(
height: 280,
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${res.data[0]['tag_name']}',
style: const TextStyle(fontSize: 20),
),
const SizedBox(height: 8),
Text('${res.data[0]['body']}'),
TextButton(
onPressed: () => PageUtils.launchURL(
'https://github.com/bggRGjQaUbCoE/PiliPlus/commits/main'),
child: Text(
"点此查看完整更新(即commit)内容",
style: TextStyle(
color: theme.colorScheme.primary,
),
),
),
],
),
),
),
actions: [
TextButton(
onPressed: () {
SmartDialog.dismiss();
GStorage.setting.put(SettingBoxKey.autoUpdate, false);
},
child: Text(
'不再提醒',
style: TextStyle(
color: theme.colorScheme.outline,
),
),
),
TextButton(
onPressed: SmartDialog.dismiss,
child: Text(
'取消',
style: TextStyle(
color: theme.colorScheme.outline,
),
),
),
TextButton(
onPressed: () => onDownload(res.data[0]),
child: const Text('Github'),
),
],
);
},
);
}
} catch (e) {
if (kDebugMode) debugPrint('failed to check update: $e');
}
}
// 下载适用于当前系统的安装包
static Future<void> onDownload(data) async {
SmartDialog.dismiss();
try {
void download(plat) {
if (data['assets'].isNotEmpty) {
for (dynamic i in data['assets']) {
if (i['name'].contains(plat)) {
PageUtils.launchURL(i['browser_download_url']);
break;
}
}
}
}
if (Platform.isAndroid) {
// 获取设备信息
AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
// [arm64-v8a]
download(androidInfo.supportedAbis.first);
} else {
download('ios');
}
} catch (_) {
PageUtils.launchURL(
'https://github.com/bggRGjQaUbCoE/PiliPlus/releases/latest');
}
}
}