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
String? latestVersion;
if (useCache) {
final cachedInfo = await _getCachedUpdateInfo();
if (cachedInfo != null && !_isCacheExpired(cachedInfo.lastChecked)) {
latestVersion = cachedInfo.latestVersion;
} else {
// Fetch latest version from pub.dev
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(),
);
}
}