checkForUpdates static method
Check for updates and return update information
Implementation
static Future<UpdateInfo> checkForUpdates() async {
try {
// Check cache first
final cachedInfo = await _getCachedUpdateInfo();
if (cachedInfo != null && !_isCacheExpired(cachedInfo.lastChecked)) {
return cachedInfo;
}
// Fetch latest version from pub.flutter-io.cn
final latestVersion = await _fetchLatestVersion();
if (latestVersion == null) {
return UpdateInfo(
currentVersion: AppConfig.version,
latestVersion: AppConfig.version,
hasUpdate: false,
lastChecked: DateTime.now(),
);
}
// 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(),
);
}
}