Flutter即时通讯插件zego_zimkit的使用
Flutter即时通讯插件zego_zimkit的使用
ZIMKit(ZegoCloud In-App Chat UIKit)
ZIMKit 是 ZegoCloud 提供的一个即用型聊天 UI 套件,支持多种即时通讯功能。以下是 ZIMKit 的主要功能:
🥳 beta 支持:
- 创建点对点聊天 / 创建群聊 / 加入群聊
- 发送文本、图片(<10M)、GIF(<10M)、视频(<100M)、文件(<100M)
- 长按会话列表项删除会话或退出群聊
- 自定义 UI(请检查小部件的参数)
✨ 即将推出:
- 邀请加入群聊 / 设置用户头像 / 设置群头像
- 下载文件
1. 初始化 IMKit
在 main.dart
文件中初始化 ZIMKit:
void main() {
ZIMKit().init(
appID: YOUR_APP_ID, // 你的 App ID
appSign: YOUR_APP_SIGN, // 你的 App Sign
);
runApp(const ZIMKitDemo());
}
2. 用户登录
创建一个按钮,用户点击后进行登录操作:
ElevatedButton(
onPressed: () async {
await ZIMKit()
.connectUser(id: userID.text, name: userName.text);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => const ZIMKitDemoHomePage(),
),
);
},
child: const Text("登录"),
)
3. 享受聊天功能
创建一个主页,显示会话列表并导航到消息页面:
class ZIMKitDemoHomePage extends StatelessWidget {
const ZIMKitDemoHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
appBar: AppBar(title: const Text('会话')),
body: ZIMKitConversationListView(
onPressed: (context, conversation, defaultAction) {
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return ZIMKitMessageListPage(
conversationID: conversation.id,
conversationType: conversation.type,
);
},
));
},
),
),
);
}
}
示例代码
以下是一个完整的示例代码,展示了如何使用 ZIMKit 进行即时通讯:
main.dart
import 'package:flutter/material.dart';
import 'package:zego_zimkit/zego_zimkit.dart';
import 'package:zego_zimkit_example/home_page.dart';
void main() {
ZIMKit().init(
appID: YOUR_APP_ID, // 你的 App ID
appSign: YOUR_APP_SIGN, // 你的 App Sign
);
runApp(const ZIMKitDemo());
}
class ZIMKitDemo extends StatelessWidget {
const ZIMKitDemo({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ZIMKit Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const LoginPage(),
);
}
}
class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key);
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
final TextEditingController userIDController = TextEditingController();
final TextEditingController userNameController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('登录')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: userIDController,
decoration: const InputDecoration(labelText: '用户ID'),
),
TextField(
controller: userNameController,
decoration: const InputDecoration(labelText: '用户名'),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
await ZIMKit()
.connectUser(id: userIDController.text, name: userNameController.text);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => const ZIMKitDemoHomePage(),
),
);
},
child: const Text("登录"),
),
],
),
),
);
}
}
home_page.dart
import 'package:flutter/material.dart';
import 'package:zego_zimkit/zego_zimkit.dart';
class ZIMKitDemoHomePage extends StatelessWidget {
const ZIMKitDemoHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
appBar: AppBar(title: const Text('会话')),
body: ZIMKitConversationListView(
onPressed: (context, conversation, defaultAction) {
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return ZIMKitMessageListPage(
conversationID: conversation.id,
conversationType: conversation.type,
);
},
));
},
),
),
);
}
}
pubspec.yaml
确保在 pubspec.yaml
文件中添加 ZIMKit 依赖:
dependencies:
flutter:
sdk: flutter
zego_zimkit: ^1.0.0
通过以上步骤,你可以快速集成 ZegoCloud 的 ZIMKit 到你的 Flutter 应用中,实现即时通讯功能。希望这些信息对你有所帮助!如果有任何问题,请随时联系 ZegoCloud 的技术支持团队。
更多关于Flutter即时通讯插件zego_zimkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件zego_zimkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成并使用zego_zimkit
插件以实现即时通讯功能,可以按照以下步骤进行。下面是一个基本的代码案例,展示如何初始化ZegoIM、登录、发送和接收消息。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加zego_zimkit
依赖:
dependencies:
flutter:
sdk: flutter
zego_zimkit: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来获取依赖。
2. 配置Android和iOS权限
在android/app/src/main/AndroidManifest.xml
中添加必要的权限,例如网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
对于iOS,在ios/Runner/Info.plist
中添加网络权限等必要配置。
3. 初始化ZegoIM
在你的Flutter项目中创建一个服务类来管理ZegoIM的初始化、登录和消息处理。
import 'package:flutter/material.dart';
import 'package:zego_zimkit/zego_zimkit.dart';
class ZegoIMClient {
static late ZegoIMClient _instance;
late ZegoIMClientConfig _config;
late ZegoIMClient? _client;
ZegoIMClient._internal() {
_config = ZegoIMClientConfig()
..appID = "你的AppID" // 替换为你的AppID
..serverList = ["你的IM服务器地址"]; // 替换为你的IM服务器地址
_client = ZegoIMClient.createIMClient(_config);
_client!.onLoginResult = (ZegoIMClientLoginResult result, int code, String? reason) {
if (result == ZegoIMClientLoginResult.success) {
print("登录成功");
} else {
print("登录失败: $reason");
}
};
_client!.onMessageReceived = (ZegoIMClientMessage message) {
print("收到消息: ${message.messageBody}");
};
}
factory ZegoIMClient() {
if (_instance == null) {
_instance = ZegoIMClient._internal();
}
return _instance;
}
Future<void> login(String userID, String token) async {
await _client!.login(userID, token);
}
Future<void> sendMessage(String toUserID, String content) async {
ZegoIMClientMessage message = ZegoIMClientMessage()
..receiverUserID = toUserID
..messageBody = content
..msgType = ZegoIMClientMessageType.text;
await _client!.sendMessage(message);
}
}
4. 使用ZegoIMClient
在你的主应用中使用上述服务类进行登录和发送消息。
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late ZegoIMClient zegoIMClient;
@override
void initState() {
super.initState();
zegoIMClient = ZegoIMClient();
zegoIMClient.login("用户ID", "用户Token").then((_) {
// 登录成功后发送消息
zegoIMClient.sendMessage("接收者ID", "Hello, this is a test message!");
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('ZegoIM Demo'),
),
body: Center(
child: Text('登录并发送消息中...'),
),
),
);
}
}
注意事项
- AppID和Token:你需要从Zego云通信平台获取你的AppID和生成有效的Token。
- 错误处理:示例代码中没有包含详细的错误处理逻辑,实际应用中应该添加适当的错误处理。
- UI更新:示例代码中的UI更新是简单的文本显示,实际应用中你可能需要根据消息内容更新UI组件。
这只是一个基本的示例,用于展示如何在Flutter中使用zego_zimkit
插件进行即时通讯。根据你的实际需求,你可能需要扩展这个示例,添加更多的功能和优化。