pub_api_client 3.1.1 copy "pub_api_client: ^3.1.1" to clipboard
pub_api_client: ^3.1.1 copied to clipboard

An API Client for Pub to interact with public package information.

drawing

Pub Version Pub Likes Pub Points Coverage Status MIT Licence

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();
}
copied to clipboard

API #

Packages #

Get Package Info

Retrieves all available information about an specific package.

final package =  await client.packageInfo('pkg_name');
copied to clipboard

Get Package Score

Returns the following score information about a package.

  • Pub Points
  • Popularity
  • Likes
final score =  await client.packageScore('pkg_name');
copied to clipboard

Get Package Metrics

The method 'packageMetrics' returns the package 'score' together with a 'scorecard'

final metrics =  await client.packageMetrics('pkg_name');
copied to clipboard

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');
copied to clipboard

Get Package Version Info

The method packageVersionInfo returns information about a version of a specific package.

final version =  await client.packageVersionInfo('pkg_name', 'version');
copied to clipboard

Get Package Publisher

The method packagePublisher returns the publisherId of a specific package.

final publisher =  await client.packagePublisher('pkg_name');
// publisher.publisherId
copied to clipboard

Get Package Options

The method packageOptions returns options of a package.

final options =  await client.packageOptions('pkg_name');
copied to clipboard

Get Documentation

The method documentation returns all versions and their respective documentation status.

final documentation =  await client.documentation('pkg_name');

copied to clipboard

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();
copied to clipboard

Package Like Status

Returns like status of a package.

final like =  await client.likePackageStatus();
copied to clipboard

Like a Package

Likes a package. The method returns packageLike payload

final like =  await client.likePackage('pkg_name');
copied to clipboard

Unlike a Package

Unlikes a package. The method returns packageLike payload

final like =  await client.unlikePackage('pkg_name');
copied to clipboard

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)
copied to clipboard

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)
copied to clipboard

Paging Search Results

You are able to page search results.

final results =  await client.search('query');
final nextResults = await results.nextPage();

print(nextResults.packages)
copied to clipboard

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)
copied to clipboard

Utilities #

Flutter Favorites #

Returns all Flutter favorites on pub.dev

final results = await client.fetchFlutterFavorites();
copied to clipboard

Google Packages #

Returns all official Google packages. This will be a large payload with hundreds of packages.

final results = await client.fetchGooglePackages();
copied to clipboard

Publisher Packages #

Returns all packages for a specific publisher


final results = await client.fetchPublisherPackages();
copied to clipboard

All Packages #

Returns all packages that match a given query

final results = await fetchAllPackages('', tags: [PackageTag.publisher('leoafarias.com')])
copied to clipboard
63
likes
160
points
75.2k
downloads

Publisher

verified publisherleoafarias.com

Weekly Downloads

2024.09.16 - 2025.03.31

An API Client for Pub to interact with public package information.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

dart_mappable, http, oauth2, path, pubspec_parse

More

Packages that depend on pub_api_client