checkForUpdate method
Check the latest published version on pub.dev.
Returns an UpdateCheckResult with version comparison info.
Implementation
Future<UpdateCheckResult> checkForUpdate() async {
final url = '$apiBaseUrl/api/packages/$packageName';
try {
final body = await _doFetchJson(url);
final json = jsonDecode(body) as Map<String, dynamic>;
final latest = _extractLatestVersion(json);
if (latest == null) {
return UpdateCheckResult(
currentVersion: currentVersion,
updateAvailable: false,
message: 'Could not parse latest version from pub.dev response.',
);
}
final available = _isNewer(currentVersion, latest);
final msg = available
? 'Update available: $currentVersion → $latest'
: 'Already on the latest version.';
return UpdateCheckResult(
currentVersion: currentVersion,
latestVersion: latest,
updateAvailable: available,
message: msg,
);
} on SocketException {
return UpdateCheckResult(
currentVersion: currentVersion,
updateAvailable: false,
message:
'Network error: Could not reach $apiBaseUrl. '
'Check your internet connection.',
);
} on FormatException catch (e) {
return UpdateCheckResult(
currentVersion: currentVersion,
updateAvailable: false,
message: 'Failed to parse pub.dev response: $e',
);
} catch (e) {
return UpdateCheckResult(
currentVersion: currentVersion,
updateAvailable: false,
message: 'Unexpected error checking for update: $e',
);
}
}