Awesome
<img src="https://github.com/leoafarias/pub_api_client/blob/main/assets/logo.png?raw=true" alt="drawing" width="320"/>An unofficial API client for Pub.dev
Aims to be the most complete and stable pub.dev API client. If any particular endpoint is missing please open an issue.
Table of contents
Usage
A simple usage example:
import 'package:pub_api_client/pub_api_client.dart';
main() {
final client = PubClient();
}
API
Packages
Get Package Info
Retrieves all available information about an specific package.
final package = await client.packageInfo('pkg_name');
Get Package Score
Returns the following score information about a package.
- Pub Points
- Popularity
- Likes
final score = await client.packageScore('pkg_name');
Get Package Metrics
The method 'packageMetrics' returns the package 'score' together with a 'scorecard'
final metrics = await client.packageMetrics('pkg_name');
Get Package Versions
The method 'packageVersions' also returns the versions. However if all you need is versions use this method since it's lighter.
final versions = await client.packageVersions('pkg_name');
Get Package Version Info
The method packageVersionInfo
returns information about a version of a specific package.
final version = await client.packageVersionInfo('pkg_name', 'version');
Get Package Publisher
The method packagePublisher
returns the publisherId of a specific package.
final publisher = await client.packagePublisher('pkg_name');
// publisher.publisherId
Get Package Options
The method packageOptions
returns options of a package.
final options = await client.packageOptions('pkg_name');
Get Documentation
The method documentation
returns all versions and their respective documentation status.
final documentation = await client.documentation('pkg_name');
Like Packages
All requests for likes require pub.dev authentication.
List liked packages
Displays list of of packages you have liked. Returns list of packageLikes
final likes = await client.listPackageLikes();
Package Like Status
Returns like status of a package.
final like = await client.likePackageStatus();
Like a Package
Likes a package. The method returns packageLike
payload
final like = await client.likePackage('pkg_name');
Unlike a Package
Unlikes a package. The method returns packageLike
payload
final like = await client.unlikePackage('pkg_name');
Search Packages
Search for packages on pub.dev. Will return the packages that match the query. You can filter the search with tags.
final results = await client.search(
'query',
tags: [
PackageTag.publisher('publisher_id'),
PackageTag.dependency('dependency_name'),
'another:tag',
],
topics:['topic_1', 'topic_2'],
);
// Returns the packages that match the query
print(results.packages)
Sorting search results
You are able to sort search results by the following:
Top
Search score should be a weighted value of [text], [popularity], [points] and [like], ordered decreasing.
Text
Search score should depend only on text match similarity, ordered decreasing.
Created
Search order should be in decreasing last package creation time.
Updated
Search order should be in decreasing last package updated time.
Popularity
Search order should be in decreasing popularity score.
Like
Search order should be in decreasing like count.
Points
Search order should be in decreasing pub points.
final results = await client.search('query', sort: SearchOrder.updated);
print(results.packages)
Paging Search Results
You are able to page search results.
final results = await client.search('query');
final nextResults = await results.nextPage();
print(nextResults.packages)
If you want to retrieve a specific result page you can call the page
parameter directly.
final results = await client.search('query',page:2);
print(results.packages)
Utilities
Flutter Favorites
Returns all Flutter favorites on pub.dev
final results = await client.fetchFlutterFavorites();
Google Packages
Returns all official Google packages. This will be a large payload with hundreds of packages.
final results = await client.fetchGooglePackages();
Publisher Packages
Returns all packages for a specific publisher
final results = await client.fetchPublisherPackages();