0 purchases
dart spotify api
Spotify API Dart Client #
This repository provides a comprehensive Dart client for the Spotify API, empowering you to seamlessly interact with its various features.
Installation #
Using flutter pub (for Flutter projects)
flutter pub add dart_spotify_api
copied to clipboard
Using dart pub (for general Dart projects)
dart pub add dart_spotify_api
copied to clipboard
Modifying pubspec.yaml
Add the following line to your pubspec.yaml file under the dependencies section:
dependencies:
dart_spotify_api: ^1.1.0
copied to clipboard
Then, run flutter pub get (for Flutter projects) or dart pub get (for general Dart projects) to install the package.
Platform-Specific Configuration
Android
Minimum SDK Version: Set the minSdkVersion in your build.gradle file to at least 18.
AndroidManifest.xml: Add the following code within your AndroidManifest.xml file:
<activity android:name="com.linusu.flutter_web_auth_2.CallbackActivity" android:exported="true">
<intent-filter android:label="flutter_web_auth_2">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="custom-scheme" /> <!-- This must correspond to the custom scheme used for instantiating the client. See below. -->
</intent-filter>
</activity>
copied to clipboard
iOS
Podfile: Set the platform in your ios/Podfile file to platform :ios, '11.0'.
Web
Web support is available starting from version 2.2.0. It's considered preliminary but functional.
HTTPS Redirect URI: You must register your application using an HTTPS redirect URI.
JavaScript for Code Retrieval: The authorization code flow involves opening a popup window. After the user grants access, the server redirects the browser to your redirect URI. This page should include JavaScript code to retrieve the code parameter from the URL and pass it to the parent window using postMessage. Here's an example:
window.onload = function() {
const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get('code');
if (code) {
window.opener.postMessage(window.location.href, '_url_of_the_opener_window_');
}
};
copied to clipboard
Important Note: The browser cannot securely store confidential information. When using the OAuth2Helper class on the web, tokens are stored in localStorage, which means they are not encrypted.
Refer to the oauth2_client documentation for more detailed information regarding the installation instructions above.
Linux
Install the libsecret-1-dev dependency:
sudo apt-get install libsecret-1-dev
copied to clipboard
Linux/Windows:
Local Port: Define a local port for the web server when using this library on Linux/Windows:
final spotifyService = SpotifyService(
// Other properties
localhostPort: 8080, // Set the local port for Linux/Windows
);
copied to clipboard
Add the URL http://localhost:{port} to your app's URLs in the Spotify dashboard.
Usage #
This section provides basic examples to get you started with the Spotify API in Dart.
import 'package:dart_spotify_api/dart_spotify_api.dart';
void main() async {
// Create an instance of the Spotify Service
final spotifyService = SpotifyService(
clientId: 'YOUR_CLIENT_ID', // Replace with your client ID
clientSecret: 'YOUR_CLIENT_SECRET', // Replace with your client secret
customUriScheme: 'custom-scheme', // Choose a custom scheme for your app
redirectUri: 'your-app-redirect-uri', // App's redirect URI
localhostPort: 8080, // Set the local port for Linux/Windows, if applicable
);
// Initialize the service
await spotifyService.initialize();
// Login
await spotifyService.login();
// Check if the user is logged in
if (spotifyService.loggedIn) {
// Perform actions after successful login
}
}
copied to clipboard
Get user information:
final user = await spotifyService.getUser();
print('User name: ${user?.displayName}');
copied to clipboard
Perform a search:
final searchResults = await spotifyService.search(
'The Beatles',
type: [SearchType.artist, SearchType.album],
);
print('Search results: $searchResults');
copied to clipboard
Get an album:
final album = await spotifyService.getAlbum('album_id');
print('Album name: ${album?.name}');
copied to clipboard
Get a track:
final track = await spotifyService.getTrack('track_id');
print('Track name: ${track?.name}');
copied to clipboard
Get an artist:
final artist = await spotifyService.getArtist('artist_id');
print('Artist name: ${artist?.name}');
copied to clipboard
Get a playlist:
final playlist = await spotifyService.getPlaylist('playlist_id');
print('Playlist name: ${playlist?.name}');
copied to clipboard
Get similar artists:
final similarArtists = await spotifyService.getSimilarArtists('artist_id');
print('Similar artists: ${similarArtists.map((artist) => artist.name).join(', ')}');
copied to clipboard
Get album tracks:
final albumTracks = await spotifyService.getAlbumTracks('album_id');
print('Album tracks: ${albumTracks.map((track) => track.name).join(', ')}');
copied to clipboard
Get an artist's top tracks:
final topTracks = await spotifyService.getTopTracks('artist_id');
print('Top tracks: ${topTracks.map((track) => track.name).join(', ')}');
copied to clipboard
Get an artist's top albums:
final topAlbums = await spotifyService.getTopAlbums('artist_id');
print('Top albums: ${topAlbums.map((album) => album.name).join(', ')}');
copied to clipboard
Get an artist's top singles:
final topSingles = await spotifyService.getTopSingles('artist_id');
print('Top singles: ${topSingles.map((album) => album.name).join(', ')}');
copied to clipboard
Get user playlists:
final userPlaylists = await spotifyService.getUserPlaylists();
print('User playlists: ${userPlaylists.map((playlist) => playlist.name).join(', ')}');
copied to clipboard
API Documentation #
You can find the full Spotify API documentation here.
Contributions #
Contributions are welcome! If you want to contribute to this project, please follow these steps:
Fork this repository.
Create a new branch for your modification.
Make your changes and submit a pull request.
License #
This project is licensed under the MIT License. See the LICENSE file for details.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.