Flutter集成悟空IM插件wukongimfluttersdk的使用
Flutter集成悟空IM插件wukongimfluttersdk的使用
快速入门
安装
dependencies:
wukongimfluttersdk: ^version // 版本号看上面
引入
import 'package:wukongimfluttersdk/wkim.dart';
初始化sdk
WKIM.shared.setup(Options.newDefault('uid', 'token'));
初始化IP
WKIM.shared.options.getAddr = (Function(String address) complete) async {
// 可通过接口获取后返回
String ip = await HttpUtils.getIP();
complete(ip);
};
连接
WKIM.shared.connectionManager.connect();
断开
// isLogout true:退出并不再重连 false:退出保持重连
WKIM.shared.connectionManager.disconnect(isLogout)
发消息
WKIM.shared.messageManager.sendMessage(WKTextContent('我是文本消息'), WKChannel(channelID, channelType));
监听
连接监听
WKIM.shared.connectionManager.addOnConnectionStatus('home',
(status, reason, connectInfo) {
if (status == WKConnectStatus.connecting) {
// 连接中
} else if (status == WKConnectStatus.success) {
var nodeId = connectInfo?.nodeId; // 节点id
// 成功
} else if (status == WKConnectStatus.noNetwork) {
// 网络异常
} else if (status == WKConnectStatus.syncMsg) {
// 同步消息中
} else if (status == WKConnectStatus.syncCompleted) {
// 同步完成
}
});
消息入库
WKIM.shared.messageManager.addOnMsgInsertedListener((wkMsg) {
// todo 展示在UI上
});
收到新消息
WKIM.shared.messageManager.addOnNewMsgListener('chat', (msgs) {
// todo 展示在UI上
});
刷新某条消息
WKIM.shared.messageManager.addOnRefreshMsgListener('chat', (wkMsg) {
// todo 刷新消息
});
命令消息(cmd)监听
WKIM.shared.cmdManager.addOnCmdListener('chat', (cmdMsg) {
// todo 按需处理cmd消息
});
- 包含
key
的事件监听均有移除监听的方法,为了避免重复收到事件回调,在退出或销毁页面时通过传入的key
移除事件。
许可证
悟空IM 使用 Apache 2.0 许可证。有关详情,请参阅 LICENSE 文件。
示例代码
example
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- Lab: Write your first Flutter app
- Cookbook: Useful Flutter samples
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
以下是一个完整的示例代码,展示了如何在Flutter项目中集成悟空IM插件wukongimfluttersdk
。
import 'package:flutter/material.dart';
import 'package:wukongimfluttersdk/wkim.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
[@override](/user/override)
void initState() {
super.initState();
// 初始化SDK
WKIM.shared.setup(Options.newDefault('uid', 'token'));
// 初始化IP
WKIM.shared.options.getAddr = (Function(String address) complete) async {
String ip = await HttpUtils.getIP();
complete(ip);
};
// 添加连接状态监听
WKIM.shared.connectionManager.addOnConnectionStatus('home',
(status, reason, connectInfo) {
if (status == WKConnectStatus.connecting) {
print("正在连接...");
} else if (status == WKConnectStatus.success) {
var nodeId = connectInfo?.nodeId;
print("连接成功,节点ID: $nodeId");
} else if (status == WKConnectStatus.noNetwork) {
print("网络异常");
} else if (status == WKConnectStatus.syncMsg) {
print("同步消息中");
} else if (status == WKConnectStatus.syncCompleted) {
print("同步完成");
}
});
// 连接
WKIM.shared.connectionManager.connect();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('悟空IM Flutter SDK Demo'),
),
body: Center(
child: Text('点击按钮发送消息'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 发送消息
WKIM.shared.messageManager.sendMessage(
WKTextContent('Hello, World!'), WKChannel('channelID', 'channelType'));
},
tooltip: '发送消息',
child: Icon(Icons.send),
),
);
}
[@override](/user/override)
void dispose() {
// 移除连接状态监听
WKIM.shared.connectionManager.removeOnConnectionStatus('home');
// 断开连接
WKIM.shared.connectionManager.disconnect(false);
super.dispose();
}
}
更多关于Flutter集成悟空IM插件wukongimfluttersdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成悟空IM插件wukongimfluttersdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用悟空IM插件(wukongimfluttersdk)的代码示例。这个示例将展示如何初始化插件、登录、发送消息以及接收消息的基本操作。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加悟空IM插件的依赖:
dependencies:
flutter:
sdk: flutter
wukongimfluttersdk: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来下载依赖。
2. 初始化插件
在你的Flutter应用的主文件(通常是main.dart
)中,你需要初始化悟空IM插件。
import 'package:flutter/material.dart';
import 'package:wukongimfluttersdk/wukong_im_flutter_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 初始化悟空IM插件
WukongIMClient.instance.init({
"appId": "你的AppID", // 请替换为你的实际AppID
"serverUrl": "你的服务器URL", // 请替换为你的实际服务器URL
});
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('悟空IM集成示例'),
),
body: ChatScreen(),
),
);
}
}
3. 登录
在你的ChatScreen
(或任何你希望处理登录逻辑的Widget)中,实现登录功能。
class ChatScreen extends StatefulWidget {
@override
_ChatScreenState createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
void login() async {
try {
bool result = await WukongIMClient.instance.login({
"userId": "用户ID", // 请替换为你的实际用户ID
"token": "用户Token", // 请替换为你的实际用户Token
});
if (result) {
print("登录成功");
} else {
print("登录失败");
}
} catch (e) {
print("登录时发生错误: $e");
}
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: login,
child: Text('登录'),
),
// 其他UI组件...
],
),
);
}
}
4. 发送消息
在登录成功后,你可以发送消息。以下是一个发送文本消息的示例:
void sendMessage() async {
try {
bool result = await WukongIMClient.instance.sendMessage({
"conversationId": "会话ID", // 请替换为你的实际会话ID
"content": {
"type": "text",
"text": "Hello, 悟空IM!",
},
});
if (result) {
print("消息发送成功");
} else {
print("消息发送失败");
}
} catch (e) {
print("发送消息时发生错误: $e");
}
}
你可以在ChatScreen
中添加一个按钮来调用sendMessage
函数。
5. 接收消息
悟空IM插件通常会通过监听器或回调来接收消息。你可以设置一个全局监听器来接收新消息。
@override
void initState() {
super.initState();
// 设置消息监听器
WukongIMClient.instance.onMessageReceived.listen((message) {
print("收到新消息: ${message['content']['text']}");
// 在这里处理收到的消息,比如更新UI
});
}
6. 清理资源
在你的应用退出或不再需要悟空IM插件时,记得清理资源。
@override
void dispose() {
super.dispose();
// 注销悟空IM插件
WukongIMClient.instance.logout();
}
总结
以上代码展示了如何在Flutter中集成并使用悟空IM插件进行基本的登录、发送消息和接收消息操作。请注意,这只是一个基本示例,实际项目中可能需要处理更多的错误处理和状态管理。务必参考悟空IM插件的官方文档来获取更详细的信息和高级功能。