Flutter即时通讯插件deadsimplechat_sdk_flutter的使用

Flutter即时通讯插件deadsimplechat_sdk_flutter的使用

添加高度可扩展的聊天功能到你的Flutter应用只需几分钟时间,使用DeadSimpleChat Flutter Chat SDK。

该组件使用DeadSimpleChatController来处理聊天操作,如发送消息、回复、禁止用户等。DeadSimpleChat组件还提供了广泛的事件监听器,您可以用来监听聊天室中的各种事件。

特性

  • 实时通信。
  • 多通道支持。
  • 私人消息。
  • 消息历史记录。
  • 消息反应。
  • 用户封禁/解封。
  • 自定义UI。
  • 翻译支持。

安装

在您的pubspec.yaml文件中添加以下依赖项以安装DeadSimpleChat:

dependencies:
  deadsimplechat_sdk_flutter: latest_version

使用

要在应用程序中使用DeadSimple Chat组件,首先导入它:

import 'package:deadsimplechat_sdk_flutter/deadsimplechat_sdk_flutter.dart';

然后,使用所需的参数实例化它:

DeadSimpleChat(
  roomId: 'roomId',
  publicKey: 'publicKey',
  controller: DeadSimpleChatController(),
  onMessageReceived: (message) => print('Message received: $message'),
);

使用DeadSimpleChatController

DeadSimpleChatController提供了多种方法,可以调用这些方法执行不同的聊天室操作。

以下是一个简单的DeadSimpleChatController使用示例:

final chatController = DeadSimpleChatController();

// 调用此方法发送消息
chatController.sendMessage('Hello, World!');

// 调用此方法获取在线用户列表
var onlineUsers = await chatController.getOnlineUsers();

// 调用此方法获取消息
var messages = await chatController.getMessages();

// 调用此方法注销
chatController.logout();

以下是DeadSimpleChatController类中可用的方法:

方法名 描述 参数
connect() 连接到聊天服务器
joinRoom(JoinOptions options) 使用指定的加入选项加入聊天室 options - 包含加入选项的对象
getOnlineUsers() 获取聊天室中的在线用户列表
getMessages(int skip) 从给定的skip索引开始检索聊天消息 skip - 开始检索消息的索引
sendMessage(String message) 向聊天室发送一条消息 message - 要发送的消息
replyMessage(String messageId, String message) 使用提供的消息回复特定的聊天消息 messageId - 消息ID
message - 回复消息
getActiveChannels() 获取聊天室中的活跃频道列表
selectChannel(String channelId) 选择要显示在聊天中的特定频道 channelId - 频道ID
getChannelMessages(String channelId, int skip) 从给定的skip索引开始检索特定频道的消息 channelId - 频道ID
skip - 开始检索消息的索引
sendChannelMessage(String message, String channelId) 向特定频道发送一条消息 message - 要发送的消息
channelId - 频道ID
replyChannelMessage(String messageId, String channelId, String message) 使用提供的消息、消息ID和频道ID回复特定频道消息 messageId - 消息ID
channelId - 频道ID
message - 回复消息
getActiveConversations() 获取聊天室中的活跃对话列表
openConversation(String conversationId) 在聊天中打开特定对话 conversationId - 对话ID
createConversation(String userId) 创建与指定用户的对话 userId - 用户ID
sendPrivateMessage(String message, String conversationId) 向特定对话发送一条私人消息 message - 要发送的消息
conversationId - 对话ID
likeMessage(String messageId, String reaction, String action) 使用指定的反应和动作喜欢特定的聊天消息 messageId - 消息ID
reaction - 反应类型
action - 动作类型
likeChannelMessage(String channelId, String messageId, String reaction, String action) 使用提供的频道ID、消息ID、反应和动作喜欢特定的频道消息 channelId - 频道ID
messageId - 消息ID
reaction - 反应类型
action - 动作类型
approveMessage(String messageId) 使用给定的消息ID批准特定的聊天消息 messageId - 消息ID
deleteMessage(String messageId) 使用给定的消息ID删除特定的聊天消息 messageId - 消息ID
approveChannelMessage(String messageId, String channelId) 使用给定的消息ID和频道ID批准特定的频道消息 messageId - 消息ID
channelId - 频道ID
deleteChannelMessage(String messageId, String channelId) 使用给定的消息ID和频道ID删除特定的频道消息 messageId - 消息ID
channelId - 频道ID
banUser(String userId) 封禁特定用户 userId - 用户ID
banIp(String ip) 封禁特定IP地址 ip - 要封禁的IP地址
getBannedUsers() 获取聊天室中的封禁用户列表
unBanUser(String userId) 解封特定用户 userId - 用户ID
unBanIp(String ip) 解封特定IP地址 ip - 要解封的IP地址
loadCustomization(Object customization) 加载自定义对象以自定义聊天外观 customization - 包含自定义详细信息的对象
loadTranslation(Object translation) 加载翻译对象以翻译聊天 translation - 包含翻译详细信息的对象
logout() 注销当前用户

JoinOptions

JoinOptions 类用于提供加入参数,当使用 DeadSimpleChatController.joinRoom() 方法时。例如:

final joinOptions = JoinOptions(
  // 推荐方式
  uniqueUserIdentifier: 'cc8459b0-70b9-4bac-b472-b2d36dc3452e',
  // 推荐方式
  accessToken: 'accessToken', 
  // 不推荐
  username: 'john_doe',
  email: 'john.doe@example.com',
  password: 'password',
  roomPassword: 'roomPassword',
);

chatController.joinRoom(joinOptions);

事件监听器

DeadSimpleChat 组件提供了多种事件监听器,可以用来监听聊天室中的各种事件。例如,监听新消息接收时,可以这样做:

DeadSimpleChat(
  // 其他参数
  onMessage: (message) => print('Message received: $message'),
);

事件监听器包括:

  • onMessage(Object message):当收到新的聊天消息时触发。
  • onChannelSelected(String channelId):当选择聊天中的频道时触发。
  • onRoomJoined(String roomId):当成功加入聊天室时触发。
  • onMessageHistory(String messageId):当成功获取消息历史时触发。
  • onMessageApproved(String messageId):当聊天消息被批准时触发。
  • onMessageDeleted(String messageId):当聊天消息被删除时触发。
  • onUpdateUsers(String userId):当在线用户列表更新时触发。
  • onInvalidRoomPassword(String roomId):当提供无效房间密码时触发。
  • onRoomLimitReached(String roomId):当房间达到限制时触发。
  • onNotAuthorized(String errorMessage):当用户未授权执行某个操作时触发。
  • onMessageLiked(String messageId):当聊天消息被喜欢时触发。
  • onConversationCreated(String userId):当创建对话时触发。
  • onConversationMessage(String conversationId):当收到对话消息时触发。
  • onChannelCreated(String channelId):当创建频道时触发。
  • onChannelMessage(String channelId):当收到频道消息时触发。
  • onChannelMessageDeleted(String messageId):当频道消息被删除时触发。
  • onChannelMessageApproved(String messageId):当频道消息被批准时触发。
  • onChannelMessageLiked(String messageId):当频道消息被喜欢时触发。
  • onConnectError(String errorMessage):当连接聊天服务器时发生错误时触发。
  • onConnectSuccess(String message):当成功连接到聊天服务器时触发。
  • onJoinRoomError(String errorMessage):当加入聊天室时发生错误时触发。
  • onLoadCustomizationSuccess(String message):当自定义加载成功时触发。
  • onLoadCustomizationError(String errorMessage):当加载自定义时发生错误时触发。
  • onLoadTranslationSuccess(String message):当翻译加载成功时触发。
  • onLoadTranslationError(String errorMessage):当加载翻译时发生错误时触发。
  • onSendMessageError(String errorMessage):当发送聊天消息时发生错误时触发。

自定义和翻译

DeadSimpleChat 组件提供了自定义和翻译选项。使用 DeadSimpleChatController.loadCustomization()DeadSimpleChatController.loadTranslation() 方法分别加载自定义配置和翻译。

chatController.loadCustomization(myCustomization);
chatController.loadTranslation(myTranslation);

示例代码

以下是一个完整的示例代码:

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

void main() {
  runApp(const MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final deadsimplechatController = new DeadSimpleChatController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text("Flutter DeadSimpleChat"),
        ),
        body: Column(
          children: [
            Expanded(
                flex: 1,
                child: DeadSimpleChat(
                  debug: false,
                  roomId: "eBbYrkM-o", // 替换为房间ID
                  publicKey:
                      "pub_37325a71334a4c4a325a326b6a2d584d66557847547a724a6a5656754434516f697542582d384a315533587838583159", // 替换为从仪表板获取的公钥
                  controller: deadsimplechatController,
                )),
            Expanded(
                flex: 1,
                child: Wrap(
                  spacing: 10,
                  children: [
                    ElevatedButton(
                        onPressed: () {
                          deadsimplechatController.logout();
                          print("Logout");
                        },
                        child: Text("Logout")),
                    ElevatedButton(
                        onPressed: () {
                          deadsimplechatController.joinRoom(JoinOptions(
                              uniqueUserIdentifier:
                                  "cc8459b0-70b9-4bac-b472-b2d36dc3452e"));
                        },
                        child: Text("Join Room")),
                    ElevatedButton(
                        onPressed: () {
                          deadsimplechatController.connect();
                        },
                        child: Text("Connect")),
                    ElevatedButton(
                      child: Text("Get Messages"),
                      onPressed: () async {
                        var messages =
                            await deadsimplechatController.getMessages();
                        print("**** MESSAGE HISTORY FETCHED ***");
                        print(messages);
                      },
                    ),
                    ElevatedButton(
                        onPressed: () async {
                          var channels = await deadsimplechatController
                              .getActiveChannels();
                          print("**** CHANNELS ****");
                          print(channels);
                        },
                        child: Text("Get Channels"))
                  ],
                ))
          ],
        ));
  }
}

更多关于Flutter即时通讯插件deadsimplechat_sdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件deadsimplechat_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


deadSimpleChat_sdk_flutter 是一个用于 Flutter 的即时通讯插件,它旨在简化即时通讯功能的集成,使开发者能够快速在 Flutter 应用中实现聊天功能。以下是如何使用 deadSimpleChat_sdk_flutter 插件的基本步骤:

1. 添加依赖

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

dependencies:
  deadsimplechat_sdk_flutter: ^1.0.0  # 请替换为最新版本

然后运行 flutter pub get 以获取依赖。

2. 初始化 SDK

在你的 Flutter 应用中,首先需要初始化 deadSimpleChat_sdk_flutter SDK。通常,你可以在 main.dart 中进行初始化:

import 'package:deadsimplechat_sdk_flutter/deadsimplechat_sdk_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SDK
  await DeadSimpleChat.init(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    userId: 'USER_ID',       // 替换为用户 ID
  );
  
  runApp(MyApp());
}

3. 连接到聊天服务器

在初始化 SDK 后,你需要连接到聊天服务器:

await DeadSimpleChat.connect();

4. 发送消息

你可以使用 sendMessage 方法发送消息:

await DeadSimpleChat.sendMessage(
  chatId: 'CHAT_ID',  // 替换为聊天室 ID
  message: 'Hello, World!',
);

5. 接收消息

为了接收消息,你可以监听消息流:

DeadSimpleChat.messagesStream.listen((message) {
  print('Received message: ${message.content}');
});

6. 加入聊天室

你可以使用 joinChat 方法加入一个聊天室:

await DeadSimpleChat.joinChat(chatId: 'CHAT_ID');

7. 离开聊天室

使用 leaveChat 方法离开聊天室:

await DeadSimpleChat.leaveChat(chatId: 'CHAT_ID');

8. 断开连接

当不再需要连接时,可以断开连接:

await DeadSimpleChat.disconnect();

9. 处理错误

你可以通过监听错误流来处理错误:

DeadSimpleChat.errorStream.listen((error) {
  print('Error occurred: $error');
});

10. 清理资源

在应用退出时,确保清理资源:

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

示例代码

以下是一个简单的示例,展示了如何集成和使用 deadSimpleChat_sdk_flutter

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await DeadSimpleChat.init(
    apiKey: 'YOUR_API_KEY',
    userId: 'USER_ID',
  );
  
  await DeadSimpleChat.connect();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ChatScreen(),
    );
  }
}

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

class _ChatScreenState extends State<ChatScreen> {
  final TextEditingController _controller = TextEditingController();
  List<String> messages = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    DeadSimpleChat.messagesStream.listen((message) {
      setState(() {
        messages.add(message.content);
      });
    });
  }

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

  void _sendMessage() async {
    await DeadSimpleChat.sendMessage(
      chatId: 'CHAT_ID',
      message: _controller.text,
    );
    _controller.clear();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: messages.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(messages[index]),
                );
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Row(
              children: [
                Expanded(
                  child: TextField(
                    controller: _controller,
                    decoration: InputDecoration(
                      hintText: 'Enter your message',
                    ),
                  ),
                ),
                IconButton(
                  icon: Icon(Icons.send),
                  onPressed: _sendMessage,
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
回到顶部