import 'package:app_upgrade_plugin/models/app_market.dart'; /// App升级信息模型 class UpgradeInfo { /// 是否有新版本 final bool hasUpdate; /// 是否强制更新 final bool isForceUpdate; /// 版本号 final String versionCode; /// 版本名称 final String versionName; /// 更新说明 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.versionCode, required this.versionName, required this.updateContent, this.downloadUrl, this.appStoreUrl, this.apkSize, this.apkMd5, this.appMarkets, }); factory UpgradeInfo.fromJson(Map json) { return UpgradeInfo( hasUpdate: json['hasUpdate'] as bool? ?? false, isForceUpdate: json['isForceUpdate'] ?? false, versionCode: json['versionCode'] ?? '', versionName: json['versionName'] ?? '', 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, 'versionCode': versionCode, 'versionName': versionName, 'updateContent': updateContent, 'downloadUrl': downloadUrl, 'appStoreUrl': appStoreUrl, 'apkSize': apkSize, 'apkMd5': apkMd5, 'appMarkets': appMarkets?.map((e) => e.toJson()).toList(), }; } } /// 下载进度信息 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}); }