添加AppUpgradeVersion类的versionName、versionBuildNumbe可为空
This commit is contained in:
parent
ebe45c7fe9
commit
c497e72f57
|
|
@ -362,33 +362,64 @@ class AppUpgradeSimple {
|
||||||
|
|
||||||
// 3. 比较版本并构建 UpgradeInfo
|
// 3. 比较版本并构建 UpgradeInfo
|
||||||
bool hasUpdate = false;
|
bool hasUpdate = false;
|
||||||
if (serverInfo.versionBuildNumber > 0) {
|
|
||||||
|
final versionName = serverInfo.versionName;
|
||||||
|
final versionBuildNumber = serverInfo.versionBuildNumber;
|
||||||
|
|
||||||
|
/// 断言 判断 serverInfo 的版本名称和版本号不可都为null
|
||||||
|
assert(
|
||||||
|
!(versionBuildNumber == null && versionName == null),
|
||||||
|
'versionBuildNumber和versionName不可同时为NULL',
|
||||||
|
);
|
||||||
|
|
||||||
|
if (versionBuildNumber != null && versionBuildNumber > 0) {
|
||||||
// 优先比较 buildNumber
|
// 优先比较 buildNumber
|
||||||
if (serverInfo.versionBuildNumber > currentBuildNumber) {
|
if (versionBuildNumber > currentBuildNumber) {
|
||||||
hasUpdate = true;
|
hasUpdate = true;
|
||||||
} else if (serverInfo.versionBuildNumber == currentBuildNumber) {
|
} else if (versionBuildNumber == currentBuildNumber) {
|
||||||
// buildNumber 相同,比较版本名
|
// buildNumber 相同,比较版本名
|
||||||
if (_compareVersionStrings(serverInfo.versionName, currentVersionName) > 0) {
|
if (versionName != null && _compareVersionStrings(versionName, currentVersionName) > 0) {
|
||||||
hasUpdate = true;
|
hasUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 只比较版本名
|
// 只比较版本名
|
||||||
if (_compareVersionStrings(serverInfo.versionName, currentVersionName) > 0) {
|
if (versionName != null && _compareVersionStrings(versionName, currentVersionName) > 0) {
|
||||||
hasUpdate = true;
|
hasUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (versionBuildNumber > 0) {
|
||||||
|
// // 优先比较 buildNumber
|
||||||
|
// if (versionBuildNumber > currentBuildNumber) {
|
||||||
|
// hasUpdate = true;
|
||||||
|
// } else if (versionBuildNumber == currentBuildNumber) {
|
||||||
|
// // buildNumber 相同,比较版本名
|
||||||
|
// if (_compareVersionStrings(versionName, currentVersionName) > 0) {
|
||||||
|
// hasUpdate = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// // 只比较版本名
|
||||||
|
// if (_compareVersionStrings(versionName, currentVersionName) > 0) {
|
||||||
|
// hasUpdate = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if (config.enableDebugLog) {
|
if (config.enableDebugLog) {
|
||||||
debugPrint('📊 版本比较结果: ${hasUpdate ? "有新版本" : "已是最新"}');
|
debugPrint('📊 版本比较结果: ${hasUpdate ? "有新版本" : "已是最新"}');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建 UpgradeInfo
|
// 构建 UpgradeInfo
|
||||||
|
// 兜底处理,避免 serverInfo 里的可空字段传入非空参数导致崩溃
|
||||||
|
final safeVersionName = serverInfo.versionName ?? currentVersionName;
|
||||||
|
final safeVersionBuildNumber = serverInfo.versionBuildNumber ?? currentBuildNumber;
|
||||||
|
|
||||||
return UpgradeInfo(
|
return UpgradeInfo(
|
||||||
hasUpdate: hasUpdate,
|
hasUpdate: hasUpdate,
|
||||||
isForceUpdate: serverInfo.isForce,
|
isForceUpdate: serverInfo.isForce,
|
||||||
versionName: serverInfo.versionName,
|
versionName: safeVersionName,
|
||||||
versionBuildNumber: serverInfo.versionBuildNumber,
|
versionBuildNumber: safeVersionBuildNumber,
|
||||||
currentVersionName: currentVersionName,
|
currentVersionName: currentVersionName,
|
||||||
currentBuildNumber: currentBuildNumber,
|
currentBuildNumber: currentBuildNumber,
|
||||||
updateContent: serverInfo.updateContent,
|
updateContent: serverInfo.updateContent,
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ import 'app_upgrade_method.dart';
|
||||||
/// 用户只需返回此类的实例,插件会自动获取当前App版本进行比对
|
/// 用户只需返回此类的实例,插件会自动获取当前App版本进行比对
|
||||||
class AppUpgradeVersion {
|
class AppUpgradeVersion {
|
||||||
/// 版本名称 (如 "1.0.0")
|
/// 版本名称 (如 "1.0.0")
|
||||||
final String versionName;
|
final String? versionName;
|
||||||
|
|
||||||
/// 版本号 (如 10)
|
/// 版本号 (如 10)
|
||||||
final int versionBuildNumber;
|
final int? versionBuildNumber;
|
||||||
|
|
||||||
/// 更新内容
|
/// 更新内容
|
||||||
final String updateContent;
|
final String updateContent;
|
||||||
|
|
@ -37,9 +37,9 @@ class AppUpgradeVersion {
|
||||||
final List<AppUpgradeMethod>? supportedMethods;
|
final List<AppUpgradeMethod>? supportedMethods;
|
||||||
|
|
||||||
AppUpgradeVersion({
|
AppUpgradeVersion({
|
||||||
required this.versionName,
|
|
||||||
required this.versionBuildNumber,
|
|
||||||
required this.updateContent,
|
required this.updateContent,
|
||||||
|
this.versionName,
|
||||||
|
this.versionBuildNumber,
|
||||||
this.downloadUrl,
|
this.downloadUrl,
|
||||||
this.isForce = false,
|
this.isForce = false,
|
||||||
this.appStoreUrl,
|
this.appStoreUrl,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: yx_app_upgrade_flutter
|
name: yx_app_upgrade_flutter
|
||||||
description: "A universal, robust, and high-performance Flutter app upgrade plugin with smart update features."
|
description: "A universal, robust, and high-performance Flutter app upgrade plugin with smart update features."
|
||||||
version: 1.0.0
|
version: 1.0.1
|
||||||
homepage: https://github.com/yourusername/yx_app_upgrade_flutter
|
homepage: https://github.com/yourusername/yx_app_upgrade_flutter
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue