Skip to content

An unofficial, platform independent, client for the Unsplash API. Unsplash provides royalty-free images.

License

Notifications You must be signed in to change notification settings

blaugold/unsplash_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e29ab00 · Jan 2, 2024
Jun 12, 2022
Jan 24, 2020
Jun 26, 2021
Mar 3, 2021
Jan 2, 2024
Jan 2, 2024
Jan 16, 2020
Jan 2, 2024
Jan 17, 2020
Mar 16, 2022
Apr 11, 2021
Feb 19, 2021
Jan 2, 2024

Repository files navigation

pub.dev package page GitHub Actions CI GitHub Stars

Unsplash provides free high-resolution photos. This is a client for their REST API.


If you're looking for a database solution, check out cbl, another project of mine. It brings Couchbase Lite to standalone Dart and Flutter, with support for:

  • Full-Text Search,
  • Expressive Queries,
  • Data Sync,
  • Change Notifications

and more.


Limitations

Endpoints that act on behalf of a user are not implemented, yet.If that is something you need, please comment on this issue.

Requirements

You need to register as a developer and create an Unsplash app to access the API.

Getting started

Create an UnsplashClient

Use the credentials for your app, obtained from the developer portal, to create an UnsplashClient:

final client = UnsplashClient(
  settings: ClientSettings(credentials: AppCredentials(
    accessKey: '...',
    secretKey: '...',
  )),
);

⚠️ When you are done using a client instance, make sure to call it's close method.

Get a random photo

// Call `goAndGet` to execute the [Request] returned from `random`
// and throw an exception if the [Response] is not ok.
final photos = await client.photos.random(count: 1).goAndGet();

// The api returns a `Photo` which contains metadata about the photo and urls to download it.
final photo = photos.first;

Photo variants

A Photo comes with a set of urls for variants of the photo of different sizes, such as regular and thumb:

final thumb = photo.urls.thumb;

If the provided variants are not a good fit for your use, you can generate urls where you specify size, quality, fit and other parameters.

Call the extension method Uri.resizePhoto on photo.urls.raw to generate an Uri for a custom variant:

final custom = photo.urls.raw.resizePhoto(width: 400, height: 400);

Example

The example is a simple CLI app that fetches a few random photos.


Gabriel TerwestenGitHub @blaugoldTwitter @GTerwestenMedium @gabriel.terwesten