Flutter Twitch聊天集成插件twitch_chat的使用

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

Flutter Twitch聊天集成插件twitch_chat的使用

twitch_chat

Pub Version GitHub Last Commit GitHub License

此包用于通过Websocket和IRC连接并使用Twitch聊天。

特性

  • ✅ 连接到聊天
  • ✅ 匿名连接
  • ✅ 获取徽章
  • ✅ 获取表情符号
  • ✅ 获取BTTV、FFZ与7TV的表情符号
  • ✅ 禁言、暂停、删除消息

开始使用

获取访问令牌

在使用该插件之前,你需要获取一个访问令牌。你可以通过Twitch的开发者控制台生成此令牌,并确保使用以下范围:

  • chat:read
  • chat:edit

使用方法

初始化聊天
TwitchChat twitchChat = TwitchChat(
  'your_channel_name', // 需要加入的频道名称
  'your_username', // 你的用户名
  'your_access_token', // 你的访问令牌
  clientId: 'your_client_id', // 客户端ID
  onConnected: () {}, // 连接成功回调
  onClearChat: () {}, // 清空聊天回调
  onDeletedMessageByUserId: (String? userId) {}, // 通过用户ID删除消息回调
  onDeletedMessageByMessageId: (String? messageId) {}, // 通过消息ID删除消息回调
  onDone: () {}, // 完成回调
  onError: () {}, // 错误回调
  params: TwitchChatParameters(addFirstMessages: true), // 参数设置
);
连接到聊天
twitchChat.connect();
监听新聊天消息
twitchChat.chatStream.listen((message) {
  print('New message: $message');
});
监听连接状态更新
twitchChat!.isConnected.addListener(() {
  if (twitchChat.isConnected.value) {
    print('Connected to chat');
  } else {
    print('Disconnected from chat');
  }
});
发送消息
twitchChat.sendMessage('Hello, Twitch!');
访问表情符号和徽章
// Twitch表情符号
twitchChat.emotes;
twitchChat.emotesFromSets; // 包含所有订阅表情符号
twitchChat.cheerEmotes;

// BTTV, 7TV, FFZ表情符号(频道和全局)
twitchChat.thirdPartEmotes;

// 全局及频道徽章
twitchChat.badges;

显著的应用程序


示例代码

以下是完整的示例代码:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Twitch Chat Example')),
        body: Center(
          child: Text('Check console for chat messages'),
        ),
      ),
    );
  }
}

class ChatExample extends StatefulWidget {
  [@override](/user/override)
  _ChatExampleState createState() => _ChatExampleState();
}

class _ChatExampleState extends State<ChatExample> {
  late TwitchChat twitchChat;

  [@override](/user/override)
  void initState() {
    super.initState();

    twitchChat = TwitchChat(
      'your_channel_name',
      'your_username',
      'your_access_token',
      clientId: 'your_client_id',
      onConnected: () {
        print('Connected to chat');
      },
      onClearChat: () {
        print('Chat cleared');
      },
      onDeletedMessageByUserId: (String? userId) {
        print('Message deleted by user ID: $userId');
      },
      onDeletedMessageByMessageId: (String? messageId) {
        print('Message deleted by message ID: $messageId');
      },
      onDone: () {
        print('Connection done');
      },
      onError: () {
        print('Error occurred');
      },
      params: TwitchChatParameters(addFirstMessages: true),
    );

    twitchChat.connect();
    twitchChat.chatStream.listen((message) {
      print('New message: $message');
    });

    twitchChat!.isConnected.addListener(() {
      if (twitchChat.isConnected.value) {
        print('Connected to chat');
      } else {
        print('Disconnected from chat');
      }
    });
  }

  [@override](/user/override)
  void dispose() {
    twitchChat.disconnect();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Container();
  }
}

更多关于Flutter Twitch聊天集成插件twitch_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Twitch聊天集成插件twitch_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用twitch_chat插件来实现Twitch聊天功能的示例代码。这个示例假设你已经有一个Flutter项目,并且已经配置好了基本的开发环境。

1. 添加依赖

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

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

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

2. 配置Twitch开发者应用

在使用Twitch Chat API之前,你需要在Twitch开发者门户创建一个应用并获取Client IDClient Secret。确保你的应用已经配置了正确的回调URL(例如http://localhost,实际使用时可能需要配置一个可访问的服务器地址用于OAuth认证)。

3. 实现OAuth认证

你需要实现OAuth认证流程来获取用户的Access Token。这里假设你已经有了一个服务器来处理OAuth认证,或者你可以使用Twitch的OAuth授权码流程。以下是一个简化的流程示例:

import 'package:flutter/material.dart';
import 'package:twitch_chat/twitch_chat.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Twitch Chat Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ChatScreen(),
    );
  }
}

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  TwitchChatClient? _chatClient;
  String? _accessToken;

  @override
  void initState() {
    super.initState();
    // 在这里你可以启动OAuth认证流程,这里假设你已经有了access token
    _accessToken = "你的Access Token"; // 替换为你的实际Access Token
    initChatClient();
  }

  void initChatClient() async {
    if (_accessToken != null) {
      _chatClient = TwitchChatClient(
        clientId: "你的Client ID", // 替换为你的实际Client ID
        accessToken: _accessToken!,
        channel: "目标频道名", // 替换为你想要加入的Twitch频道名
      );

      _chatClient!.connect().then((_) {
        print("Connected to Twitch chat");
      }).catchError((error) {
        print("Error connecting to Twitch chat: $error");
      });

      _chatClient!.onMessageReceived.listen((message) {
        print("Received message: ${message.content}");
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Twitch Chat Example'),
      ),
      body: Center(
        child: _chatClient != null
            ? Text('Connected to Twitch chat')
            : Text('Loading...'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          if (_chatClient != null && _chatClient!.isConnected!) {
            await _chatClient!.sendMessage("Hello, Twitch!");
          }
        },
        tooltip: 'Send Message',
        child: Icon(Icons.send),
      ),
    );
  }

  @override
  void dispose() {
    _chatClient?.disconnect();
    super.dispose();
  }
}

注意事项

  1. OAuth认证:上面的代码示例中直接使用了_accessToken,但在实际应用中,你需要实现完整的OAuth认证流程来获取这个token。这通常涉及打开一个Web视图让用户登录Twitch并授权你的应用。

  2. 错误处理:在实际应用中,你需要添加更多的错误处理逻辑,比如处理连接失败、认证失败等情况。

  3. 安全性:不要将Client IDClient Secret硬编码在客户端代码中。考虑使用后端服务来管理这些敏感信息,并通过安全的API调用从客户端获取必要的认证信息。

  4. UI更新:上面的示例中UI非常基础,你可能需要根据实际需求设计更复杂的UI来显示聊天消息和发送按钮等。

这个示例应该给你一个基本的起点,帮助你开始集成和使用twitch_chat插件。根据你的具体需求,你可能需要进一步调整和扩展这个示例。

回到顶部