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
更多关于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,
),
],
),
),
],
),
);
}
}