getPackageInfo method
Implementation
Future<PubPackageInfo?> getPackageInfo(String packageName) async {
final uri = Uri.parse('https://pub.dev/api/packages/$packageName');
try {
final response = await client.get(uri);
if (response.statusCode != 200) {
return null;
}
final data = jsonDecode(response.body);
if (data is! Map<String, dynamic>) {
return null;
}
final latest = data['latest'];
if (latest is! Map<String, dynamic>) {
return null;
}
final version = latest['version']?.toString();
if (version == null) {
return null;
}
final pubspec = latest['pubspec'];
String? publisher;
String? repository;
if (pubspec is Map) {
publisher = pubspec['publisher']?.toString();
repository = pubspec['repository']?.toString();
}
return PubPackageInfo(
name: packageName,
latestVersion: version,
discontinued: latest['discontinued'] == true,
publisher: publisher,
repository: repository,
);
} catch (_) {
return null;
}
}