Flutter非官方Twitch开放API集成插件unofficial_twitch_open_api的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter非官方Twitch开放API集成插件unofficial_twitch_open_api的使用

本插件允许通过最新的Twitch API获取所有数据。

开始使用

为了使API正常工作,你需要在Twitch开发者控制台配置你的应用程序。如果你不知道如何操作,请遵循以下步骤:

  1. 访问Twitch开发者控制台
  2. 注册一个新的应用程序,并获取client_id
  3. 配置应用程序以获取访问令牌(bearerToken)。

初始化插件

首先,你需要创建一个TwitchManagerOpenApi实例。可以通过providerget_it来创建该实例。以下是一个例子:

/// 你可以通过provider或get_it来创建[UnofficialTwitchOpenApi]的实例。
/// 下面是一个示例:
List<SingleChildWidget> _initProvider() {
  String clientId = 'your_secret_client_id'; // 替换为你的client_id

  return [
    Provider<TwitchManagerOpenApi>(
      create: (ctx) => TwitchManagerOpenApi(
        clientId: clientId,
      ),
    ),
  ];
}

然后,你可以使用之前创建的实例来检索所需的子类:

T getInstance<T extends BaseTwitchOpenApi>() {
  final manager = Provider.of<TwitchManagerOpenApi>(context); // 获取当前上下文中的manager

  return manager.of<T>(bearerToken: 'your_secret_token'); // 使用bearerToken获取特定类型的实例
}

最后,使用这个实例。例如:

final channelInfo = getInstance<TwitchChannelInformation>(
  bearerToken: 'your_secret_token', // 替换为你的bearerToken
).getChannelInformation(broadcasterId: 'broadcaster_id'); // 替换为你要查询的broadcasterId

完整示例

下面是一个完整的示例,展示了如何使用该插件来获取频道信息并显示在界面上。

import 'package:flutter/material.dart';
import 'package:unofficial_twitch_open_api/channel_information/model/open_api_channel_information_response.dart';
import 'package:unofficial_twitch_open_api/channel_information/twitch_channel_information.dart';
import 'package:unofficial_twitch_open_api/twitch_manager_open_api.dart';

void main() {
  runApp(const AppExample());
}

class AppExample extends StatelessWidget {
  const AppExample({
    Key? key,
  }) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'unofficial_twitch_open_api Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const OpenApiExampleWidget(),
    );
  }
}

class OpenApiExampleWidget extends StatefulWidget {
  const OpenApiExampleWidget({Key? key}) : super(key: key);

  [@override](/user/override)
  _OpenApiExampleWidgetState createState() => _OpenApiExampleWidgetState();
}

class _OpenApiExampleWidgetState extends State<OpenApiExampleWidget> {
  TwitchManagerOpenApi? manager;
  List<ChannelInformationResult> infoResult = [];

  [@override](/user/override)
  void initState() {
    manager = TwitchManagerOpenApi(
      clientId: 'your_secret_client_id', // 替换为你的client_id
    );
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Column(
          children: [
            ElevatedButton(
              onPressed: () async {
                final channelInfo = manager?.of<TwitchChannelInformation>(
                  bearerToken: 'your_secret_token', // 替换为你的bearerToken
                );

                final responseInfo = await channelInfo?.getChannelInformation(
                  broadcasterId: 'broadcaster_id', // 替换为你要查询的broadcasterId
                );

                setState(() {
                  infoResult = responseInfo?.result?.channelList ?? [];
                });
              },
              child: const Text('Get random info'),
            ),
            const SizedBox(height: 16),
            ListView.separated(
              separatorBuilder: (_, __) => const Divider(),
              itemBuilder: (_, index) => ChannelInfoWidget(
                infoResult[index],
              ),
              shrinkWrap: true,
              itemCount: infoResult.length,
            ),
          ],
        ),
      ),
    );
  }
}

class ChannelInfoWidget extends StatelessWidget {
  final ChannelInformationResult informationChannel;

  const ChannelInfoWidget(
    this.informationChannel, {
    Key? key,
  }) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text(informationChannel.title ?? ''), // 显示频道标题
        const SizedBox(height: 2),
        Text(informationChannel.gameName ?? ''), // 显示游戏名称
        const SizedBox(height: 2),
        Text(informationChannel.broadcasterLanguage ?? ''), // 显示语言
      ],
    );
  }
}

更多关于Flutter非官方Twitch开放API集成插件unofficial_twitch_open_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter非官方Twitch开放API集成插件unofficial_twitch_open_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成并使用unofficial_twitch_open_api插件的示例代码。请注意,此示例假设您已经有一个Flutter项目,并且已经正确设置了开发环境。

1. 添加依赖

首先,在您的pubspec.yaml文件中添加unofficial_twitch_open_api依赖:

dependencies:
  flutter:
    sdk: flutter
  unofficial_twitch_open_api: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置API客户端

在使用Twitch API之前,您需要一个客户端ID和客户端密钥。这些可以从Twitch开发者门户获取。

3. 使用插件

以下是一个简单的示例,展示了如何使用unofficial_twitch_open_api插件来获取Twitch用户的信息。

import 'package:flutter/material.dart';
import 'package:unofficial_twitch_open_api/unofficial_twitch_open_api.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  TwitchClient? _twitchClient;
  String? _userInfo;

  @override
  void initState() {
    super.initState();
    // 替换为您的客户端ID和客户端密钥
    final String clientId = 'your_client_id';
    final String clientSecret = 'your_client_secret';

    _twitchClient = TwitchClient(clientId: clientId, clientSecret: clientSecret);
    _fetchUserInfo('twitch'); // 假设我们要获取用户名为'twitch'的用户信息
  }

  Future<void> _fetchUserInfo(String username) async {
    try {
      final User? user = await _twitchClient!.getUserByUsername(username);
      setState(() {
        _userInfo = 'Username: ${user?.displayName}\nID: ${user?.id}';
      });
    } catch (e) {
      setState(() {
        _userInfo = 'Error fetching user info: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Twitch API Example'),
        ),
        body: Center(
          child: Text(_userInfo ?? 'Loading...'),
        ),
      ),
    );
  }
}

4. 运行应用

确保您的API密钥和ID已正确配置,然后运行您的Flutter应用。如果一切正常,您应该会看到Twitch用户twitch的基本信息显示在屏幕上。

注意事项

  • 请确保您遵循Twitch API的使用条款和条件。
  • 不要在客户端代码中硬编码您的API密钥。考虑使用环境变量或安全存储来管理敏感信息。
  • 此示例仅展示了最基本的用法。unofficial_twitch_open_api插件提供了更多功能,如获取流信息、频道信息等,您可以参考其文档进行更深入的集成。

希望这个示例对您有所帮助!如果您有更多问题,欢迎继续提问。

回到顶部