checkVersionUpdate method
Check if an app update is available
Implementation
Future<VersionUpdateInfo> checkVersionUpdate() async {
try {
logv('🔍 Starting version update check...');
final packageInfo = await AppConfigBase.getPackageInfo();
final currentVersion = packageInfo.version;
final requiredVersion = _getRequiredVersion();
final recommendedVersion = _getRecommendedVersion();
logv('=== Version Check Details ===');
logv('📱 Current app version: $currentVersion');
logv('🔒 Required version: $requiredVersion');
logv('💡 Recommended version: $recommendedVersion');
logv(
'🖥️ Platform: ${kIsWeb ? 'Web' : Platform.isIOS ? 'iOS' : Platform.isAndroid ? 'Android' : 'Unknown'}');
VersionUpdateType updateType = VersionUpdateType.none;
// Check if current version meets required minimum
final isRequiredVersionValid = await appIsVersionValid(requiredVersion);
logv('✅ Is required version valid: $isRequiredVersionValid');
if (!isRequiredVersionValid) {
updateType = VersionUpdateType.required;
logd('🚨 Required version update needed - app is below minimum required version');
} else {
// Check if current version meets recommended minimum
final isRecommendedVersionValid = await appIsVersionValid(recommendedVersion);
logv('💭 Is recommended version valid: $isRecommendedVersionValid');
if (!isRecommendedVersionValid) {
updateType = VersionUpdateType.recommended;
logd('📢 Recommended version update available - newer version recommended');
} else {
logv('✨ No update needed - app is up to date');
}
}
final updateInfo = VersionUpdateInfo(
updateType: updateType,
currentVersion: currentVersion,
requiredVersion: requiredVersion,
recommendedVersion: recommendedVersion,
appStoreUrl: AppConfigBase.appStoreUrl,
);
logv('📤 Emitting version update info: ${updateInfo.updateType}');
// Emit the update info
_updateStreamController.add(updateInfo);
logv('🔍 Version update check completed');
return updateInfo;
} catch (e) {
loge('❌ Error checking version update: $e');
return const VersionUpdateInfo(
updateType: VersionUpdateType.none,
currentVersion: '',
requiredVersion: '',
recommendedVersion: '',
appStoreUrl: '',
);
}
}