twitch_api
A wrapper in pure Dart to connect to Twitch.tv using OAuth implicit authentication.
All the endpoints are implemented as defined in the Twitch API Reference
Getting started
NOTE: This package is in its early stage, please be patient until more methods are implemented or do not hesitate to open a merge request if you added support for an endpoint. Currently I do not have a roadmap of the endpoint I am going to add in priority so do not hesitate to open an issue to make suggestions depending of your needs.
To use this package you will need to register an application on the Twitch developer console to get a client ID.
After registering your application you will need to instantiate the TwitchClient class from the package with your clientId and your redirectUri .
import 'package:twitch_api/twitch_api.dart';
final _twitchClient = TwitchClient(
  clientId: clientId,
  redirectUri: redirectUri,
);
Now that you have initialized the client the last step before using the method will be to manage the first connection with your twitch account and initialize the token you will receive. You can find a complete example of an implementation using the package flutter_webview_plugin.
const clientId = "<YOUR_CLIENT_ID>";
const redirectUri = "<YOUR_REDIRECT_URL>"; // ex: "http://localhost/"
final _twitchClient = TwitchClient(
  clientId: clientId,
  redirectUri: redirectUri,
);
final _flutterWebviewPlugin = FlutterWebviewPlugin();
// First authentication through a webview
Future<TwitchToken> _openConnectionPage({
  List<TwitchApiScope> scopes = const [],
}) {
  // Listen for url changes to detect redirection on our redirectUri.
  _flutterWebviewPlugin.onUrlChanged.listen((url) {
    if (url.startsWith(_twitchClient.redirectUri)) {
      // After you got to your redirectUri you can initialize the token.
      _twitchClient.initializeToken(TwitchToken.fromUrl(url));
      // Close the webview
      _flutterWebviewPlugin.close();
    }
  });
  // When the webview is closed pop the current route.
  _flutterWebviewPlugin.onDestroy.listen((_) => Navigator.pop(context));
  // Get authorization URL for the connection with the webview.
  final _url = _twitchClient.authorizeUri(scopes);
  return Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) => WebViewPage(_url.toString()),
    ),
  ).then((_) => _twitchClient.twitchHttpClient.validateToken());
}
Now you are ready to use the methods implemented in Supported Endpoints section.
Supported Endpoints
Ads
- xStart Commercial
Analytics
- xGet Extension Analytics
- xGet Game Analytics (Documentation in progress)
Bits
- xGet Bits Leaderboard
- xGet Cheermotes
- xGet Extension Transactions
Channels
- xGet Channel Information
- xModify Channel Information
- xGet Channel Editors
Channel Points
- xCreate Custom Rewards
- xDelete Custom Reward
- xGet Custom Reward
- xGet Custom Reward Redemption
- xUpdate Custom Reward
- xUpdate Redemption Status
Chat
- xGet Channel Emotes
- xGet Global Emotes
- xGet Emote Sets
- xGet Channel Chat Badges
- xGet Global Chat Badges
- xGet Chat Settings
Clips
Entitlements
Extensions
EventSub
Games
- xGet Top Games
- xGet Games
Hype Train
Moderation
Polls
Predictions
Schedule
Search
- xSearch Categories
- xSearch Channels
Streams
- xGet Streams
Subscriptions
- xGet Broadcaster Subscriptions
Tags
Users
- xGet Users
- xGet Users Follows
Videos
Webhooks
Contributors
| Guillaume Roux | Lewis Holliday |