checkForUpdates static method
Check for updates and return update information
useCache - if true, uses cached data when available (default: true)
Set to false for explicit update commands to always check pub.dev
Implementation
static Future<UpdateInfo> checkForUpdates({bool useCache = true}) async {
try {
// Check cache first only if useCache is true
if (useCache) {
final cachedInfo = await _getCachedUpdateInfo();
if (cachedInfo != null && !_isCacheExpired(cachedInfo.lastChecked)) {
return cachedInfo;
}
}
// Fetch latest version from pub.dev
final latestVersion = await _fetchLatestVersion();
if (latestVersion == null) {
return UpdateInfo(
currentVersion: AppConfig.version,
latestVersion: AppConfig.version,
hasUpdate: false,
lastChecked: DateTime.now(),
);
}
bool _isNewerVersion(String v1, String v2) =>
Version.parse(v1) > Version.parse(v2);
// Compare versions
final hasUpdate = _isNewerVersion(latestVersion, AppConfig.version);
final updateInfo = UpdateInfo(
currentVersion: AppConfig.version,
latestVersion: latestVersion,
hasUpdate: hasUpdate,
lastChecked: DateTime.now(),
);
// Cache the result
await _cacheUpdateInfo(updateInfo);
return updateInfo;
} catch (e) {
// Return no update info on error
return UpdateInfo(
currentVersion: AppConfig.version,
latestVersion: AppConfig.version,
hasUpdate: false,
lastChecked: DateTime.now(),
error: e.toString(),
);
}
}