import 'package:app_upgrade_plugin/models/app_market.dart'; /// App升级信息模型 class UpgradeInfo { /// 是否有新版本 final bool hasUpdate; /// 是否强制更新 final bool isForceUpdate; /// 版本号 final int versionBuildNumber; /// 版本名称 final String versionName; /// 当前版本号 final int currentBuildNumber; /// 当前版本名称 final String currentVersionName; /// 更新说明 final String updateContent; /// 下载地址(Android APK地址) final String? downloadUrl; /// App Store地址(iOS) final String? appStoreUrl; /// APK文件大小(字节) final int? apkSize; /// APK MD5值(用于校验) final String? apkMd5; /// 应用商店列表(用于Android多渠道更新) final List? appMarkets; UpgradeInfo({ this.hasUpdate = false, required this.isForceUpdate, required this.versionBuildNumber, required this.versionName, required this.updateContent, required this.currentBuildNumber, required this.currentVersionName, this.downloadUrl, this.appStoreUrl, this.apkSize, this.apkMd5, this.appMarkets, }); /// 从JSON创建 /// [currentBuildNumber] 当前版本号 /// [currentVersion] 当前版本名称 factory UpgradeInfo.fromJson( Map json, { required int currentBuildNumber, required String currentVersionName, }) { final versionBuildNumber = json['versionBuildNumber']; final versionName = json['versionName']; return UpgradeInfo( hasUpdate: versionBuildNumber != currentBuildNumber || versionName != currentVersionName, isForceUpdate: json['isForceUpdate'] ?? false, versionBuildNumber: versionBuildNumber, versionName: versionName, currentBuildNumber: currentBuildNumber, currentVersionName: currentVersionName, updateContent: json['updateContent'] ?? '', downloadUrl: json['downloadUrl'] as String?, appStoreUrl: json['appStoreUrl'] as String?, apkSize: json['apkSize'] as int?, apkMd5: json['apkMd5'] as String?, appMarkets: (json['appMarkets'] as List?) ?.map((e) => AppMarketInfo.fromJson(e as Map)) .toList(), ); } Map toJson() { return { 'hasUpdate': hasUpdate, 'isForceUpdate': isForceUpdate, 'versionBuildNumber': versionBuildNumber, 'versionName': versionName, 'updateContent': updateContent, 'currentBuildNumber': currentBuildNumber, 'currentVersionName': currentVersionName, 'downloadUrl': downloadUrl, 'appStoreUrl': appStoreUrl, 'apkSize': apkSize, 'apkMd5': apkMd5, 'appMarkets': appMarkets?.map((e) => e.toJson()).toList(), }; } @override String toString() { return 'UpgradeInfo(hasUpdate: $hasUpdate, isForceUpdate: $isForceUpdate, versionBuildNumber: $versionBuildNumber, versionName: $versionName, currentBuildNumber: $currentBuildNumber, currentVersionName: $currentVersionName, updateContent: $downloadUrl, appStoreUrl: $appStoreUrl, apkSize: $apkSize, apkMd5: $apkMd5, appMarkets: $appMarkets)'; } } /// 下载进度信息 class DownloadProgress { /// 已下载字节数 final int received; /// 总字节数 final int total; /// 下载进度(0.0 - 1.0) double get progress => total > 0 ? received / total : 0.0; /// 进度百分比(0 - 100) int get percentage => (progress * 100).toInt(); DownloadProgress({required this.received, required this.total}); }