This commit is contained in:
DESKTOP-I3JPKHK\wy 2025-09-18 19:15:29 +08:00
parent 87ca82cf87
commit 223f225d94
6 changed files with 1130 additions and 173 deletions

View File

@ -175,7 +175,7 @@ dependencies {
{
"hasUpdate": true,
"isForceUpdate": false,
"versionCode": "101",
"versionBuildNumber": "101",
"versionName": "1.0.1",
"updateContent": "1. 修复了登录问题\n2. 优化了界面显示\n3. 提升了性能",
"downloadUrl": "https://your-cdn.com/app-release.apk",

View File

@ -110,19 +110,19 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
Future<UpgradeInfo?> checkUpdate(String url, {Map<String, dynamic>? params}) async {
try {
final packageInfo = await PackageInfo.fromPlatform();
final currentVersion = packageInfo.version;
final currentBuildNumber = packageInfo.buildNumber;
final currentVersionName = packageInfo.version;
final currentBuildNumber = int.parse(packageInfo.buildNumber);
//
final requestParams = {
'version': currentVersion,
'version': currentVersionName,
'buildNumber': currentBuildNumber,
'platform': Platform.isAndroid ? 'android' : 'ios',
...?params,
};
debugPrint('==== 检查更新 ====');
debugPrint('当前版本: $currentVersion (Build: $currentBuildNumber)');
debugPrint('当前版本: $currentVersionName (Build: $currentBuildNumber)');
debugPrint('请求URL: $url');
Response? response;
@ -168,10 +168,39 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
debugPrint('响应数据: $responseData');
//
final upgradeInfo = UpgradeInfo.fromJson(responseData);
// final upgradeInfo = UpgradeInfo.fromJson(responseData);
final upgradeInfo = UpgradeInfo.fromJson(
currentBuildNumber: currentBuildNumber,
currentVersionName: currentVersionName,
{
"isForceUpdate": true,
"versionBuildNumber": 101,
"versionName": "1.0.1",
"updateContent": "1. 修复了登修复了登录问题修复了登录问题修复了登录问题录问题\n2. 优化了界面显示优化了界面显示\n3. 提升了性能",
"downloadUrl":
"https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.5/1/app-release.apk",
"appStoreUrl": "https://apps.apple.com/app/id123456789",
// "apkSize": 25165824,
// "apkMd5": "d41d8cd98f00b204e9800998ecf8427e",
// "appMarkets": [
// {
// "customName": "华为应用市场",
// "market": "huawei",
// "packageName": "com.huawei.appmarket",
// "url": "appmarket://details?id=com.yourapp.package"
// },
// {
// "customName": "小米应用商店",
// "market": "xiaomi",
// "packageName": "com.xiaomi.market",
// "url": "mimarket://details?id=com.yourapp.package",
// }
// ]
},
);
//
if (_compareVersion(upgradeInfo.versionCode, currentBuildNumber) > 0) {
if (upgradeInfo.hasUpdate) {
debugPrint('✅ 发现新版本: ${upgradeInfo.versionName}');
return upgradeInfo;
} else {
@ -552,11 +581,8 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
///
/// 1v1大于v20-1v1小于v2
int _compareVersion(String v1, String v2) {
int _compareVersion(int version1, int version2) {
try {
final version1 = int.tryParse(v1) ?? 0;
final version2 = int.tryParse(v2) ?? 0;
if (version1 > version2) {
return 1;
} else if (version1 < version2) {

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
///
class AppMarketInfo {
class AppMarketInfo extends Object {
///
final AppMarket market;

View File

@ -9,11 +9,17 @@ class UpgradeInfo {
final bool isForceUpdate;
///
final String versionCode;
final int versionBuildNumber;
///
final String versionName;
///
final int currentBuildNumber;
///
final String currentVersionName;
///
final String updateContent;
@ -35,9 +41,11 @@ class UpgradeInfo {
UpgradeInfo({
this.hasUpdate = false,
required this.isForceUpdate,
required this.versionCode,
required this.versionBuildNumber,
required this.versionName,
required this.updateContent,
required this.currentBuildNumber,
required this.currentVersionName,
this.downloadUrl,
this.appStoreUrl,
this.apkSize,
@ -45,12 +53,23 @@ class UpgradeInfo {
this.appMarkets,
});
factory UpgradeInfo.fromJson(Map<String, dynamic> json) {
/// JSON创建
/// [currentBuildNumber]
/// [currentVersion]
factory UpgradeInfo.fromJson(
Map<String, dynamic> json, {
required int currentBuildNumber,
required String currentVersionName,
}) {
final versionBuildNumber = json['versionBuildNumber'];
final versionName = json['versionName'];
return UpgradeInfo(
hasUpdate: json['hasUpdate'] as bool? ?? false,
hasUpdate: versionBuildNumber != currentBuildNumber || versionName != currentVersionName,
isForceUpdate: json['isForceUpdate'] ?? false,
versionCode: json['versionCode'] ?? '',
versionName: json['versionName'] ?? '',
versionBuildNumber: versionBuildNumber,
versionName: versionName,
currentBuildNumber: currentBuildNumber,
currentVersionName: currentVersionName,
updateContent: json['updateContent'] ?? '',
downloadUrl: json['downloadUrl'] as String?,
appStoreUrl: json['appStoreUrl'] as String?,
@ -66,9 +85,11 @@ class UpgradeInfo {
return {
'hasUpdate': hasUpdate,
'isForceUpdate': isForceUpdate,
'versionCode': versionCode,
'versionBuildNumber': versionBuildNumber,
'versionName': versionName,
'updateContent': updateContent,
'currentBuildNumber': currentBuildNumber,
'currentVersionName': currentVersionName,
'downloadUrl': downloadUrl,
'appStoreUrl': appStoreUrl,
'apkSize': apkSize,

View File

@ -21,10 +21,7 @@ class MarketSelectionDialog extends StatelessWidget {
await showDialog(
context: context,
useRootNavigator: true,
builder: (context) => MarketSelectionDialog(
markets: markets,
onSelected: onSelected,
),
builder: (context) => MarketSelectionDialog(markets: markets, onSelected: onSelected),
);
}