Flutter即时通讯插件apptex_chat的使用
Flutter即时通讯插件apptex_chat的使用
本包是实现Flutter应用程序中实时聊天功能的强大且多功能的解决方案。基于Firebase Firestore和Firebase Cloud构建,此插件提供了一个独特的预设计聊天系统,具有诸如推送通知和可定制的主题等特性。
平台测试结果
Android | iOS | macOS | Web | Linux | Windows |
---|---|---|---|---|---|
✔ | ✔ | ❌ | ❌ | ❌ | ❌ |
主要特性
- 易于使用:该插件提供了一个简单直接的实现过程,使你能够无缝地将聊天功能集成到你的应用中。
- 直接集成:Firebase Firestore和Firebase Cloud直接集成,确保用户之间的通信可靠高效。
- 预构建UI:该插件附带了聊天屏幕的预构建用户界面,无需进行大量的设计工作。
- 通过单个函数启动聊天:只需调用一个函数即可发起聊天,使用户能够快速连接和沟通。
- 可定制主题:可以自定义主页和聊天屏幕的主题以匹配你的应用的设计和品牌。
相册


安装
要开始使用,请在pubspec.yaml
文件中添加以下依赖项:
dependencies:
apptex_chat: ^2.0.0
然后运行flutter pub get
来安装插件。
使用
步骤 1:Firebase配置
- 在项目中安装Firebase。
- 从Firebase下载
google-services.json
和GoogleService-Info.plist
文件。 - 在主函数中初始化Firebase。
步骤 2:用户认证
为了启用聊天功能,你需要对用户进行身份验证。当用户注册或登录时,你可以通过initChat
方法将他们的信息传递给AppTexChat。
// 这里你可以设置当前用户到Apptex聊天
AppTexChat.instance.initChat(
currentUser: ChatUserModel(
uid: "{uid}",
profileUrl: "{Profile url}",
name: "{Currect User Name}",
fcmToken: "{Fcm Token}", // 如果没有fcm token,请传递空字符串
),
);
将当前用户名
、uid
、头像URL
和fcm token
替换为用户的相应值。
步骤 3:启动聊天
要与另一个用户开始聊天,调用startNewConversationWith
函数:
// 这里你需要传递另一个用户的详细信息
AppTexChat.instance.startNewConversationWith(
ChatUserModel(
uid: "其他用户uid",
profileUrl: '其他用户头像',
name: '其他用户名',
fcmToken: '其他用户fcm token',
),
);
在收件箱屏幕上显示对话
要查看所有对话列表,可以使用ConversationsScreen
小部件。它有一个builder参数,可以根据你的应用设计来列出对话。
// 示例
ConversationsScreen(
builder: (conversations, isLoading) => ListView.separated(
separatorBuilder: (context, index) => SizedBox(height: 20),
shrinkWrap: true,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
itemCount: conversations.length,
itemBuilder: (context, index) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 1,
blurRadius: 2,
offset: Offset(0, 1),
)
],
),
padding: EdgeInsets.all(10),
child: ListTile(
onTap: () {
// TODO: 导航到聊天屏幕
},
leading: CircleAvatar(
backgroundImage:
NetworkImage(conversations[index].otherUser.profileUrl ?? ''),
),
title: Text(conversations[index].otherUser.name),
subtitle: Text(conversations[index].lastMessage),
trailing: Container(
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.blue,
shape: BoxShape.circle,
),
child: Text(
conversations[index].unreadMessageCount.toString(),
style: TextStyle(color: Colors.white),
),
),
),
),
),
);
显示特定对话的消息
要查看特定对话的消息,可以使用ChatScreen
小部件。它有一个必需的appBarBuilder
和一个可选的bubbleBuilder
参数,这使你能够根据你的应用设计创建自定义的appbar和聊天气泡。
ChatScreen(
conversationModel: conversationModel,
showMicButton: false, // 默认为true,如果你不想使用语音消息则设为false
appBarBuilder: ((currentUser, otherUser) => AppBar()), // 构建器用于创建自定义AppBar
);
功能状态
- 聊天 ✅
- 语音消息 ✅
- 图片 ✅
- 表情符号 ✅
- 视频 🚫
- 文档 🚫
- 位置 🚫
其他信息
更多即将推出的功能:
- 推送通知
- 为Web平台支持
使用的框架
- Firebase Firestore
- Firebase Cloud存储
贡献者
姓名 | GitHub |
---|---|
Sayed Muhammad Idrees | XeroDays |
Shah Raza | ShahSomething |
Jamshid Ali | mrcse |
维护帮助
示例代码
// 忽略对公共成员API文档的检查,忽略构造函数排序
// 忽略不可变性
import 'package:example/firebase_options.dart';
import 'package:example/login.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 此小部件是您的应用的根组件。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Apptex Chat Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Login(),
);
}
}
更多关于Flutter即时通讯插件apptex_chat的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件apptex_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
apptex_chat
是一个用于Flutter应用的即时通讯插件,它可以帮助开发者快速集成聊天功能到Flutter应用中。以下是使用 apptex_chat
插件的基本步骤和示例代码。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 apptex_chat
插件的依赖:
dependencies:
flutter:
sdk: flutter
apptex_chat: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化插件
在你的应用中初始化 apptex_chat
插件。通常,你可以在 main.dart
文件中进行初始化。
import 'package:apptex_chat/apptex_chat.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 ApptexChat
await ApptexChat.initialize(
apiKey: 'YOUR_API_KEY',
userId: 'USER_ID',
);
runApp(MyApp());
}
确保替换 YOUR_API_KEY
和 USER_ID
为实际的值。
3. 使用 Chat UI
apptex_chat
提供了一个现成的聊天界面,你可以直接在应用中使用。
import 'package:flutter/material.dart';
import 'package:apptex_chat/apptex_chat.dart';
class ChatScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Chat'),
),
body: ChatView(
roomId: 'ROOM_ID', // 替换为实际的房间ID
),
);
}
}
4. 发送消息
你可以使用 ApptexChat
的 API 来发送消息。
import 'package:apptex_chat/apptex_chat.dart';
void sendMessage(String roomId, String message) async {
await ApptexChat.sendMessage(
roomId: roomId,
message: message,
);
}
5. 接收消息
你可以通过监听消息流来接收消息。
import 'package:apptex_chat/apptex_chat.dart';
void listenToMessages(String roomId) {
ApptexChat.getMessageStream(roomId).listen((message) {
print('New message: ${message.content}');
});
}
6. 处理用户身份验证
如果应用需要用户登录,你可以在用户登录后更新用户身份信息。
import 'package:apptex_chat/apptex_chat.dart';
void updateUserProfile(String userId, String userName) async {
await ApptexChat.updateUserProfile(
userId: userId,
userName: userName,
);
}
7. 处理通知
你还可以集成通知功能,以便在收到新消息时通知用户。
import 'package:apptex_chat/apptex_chat.dart';
void setupNotifications() async {
await ApptexChat.setupNotifications();
}
void sendNotification(String roomId, String message) async {
await ApptexChat.sendNotification(
roomId: roomId,
message: message,
);
}
8. 示例应用
以下是一个简单的示例应用,展示了如何使用 apptex_chat
插件。
import 'package:flutter/material.dart';
import 'package:apptex_chat/apptex_chat.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await ApptexChat.initialize(
apiKey: 'YOUR_API_KEY',
userId: 'USER_ID',
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: ChatScreen(),
);
}
}
class ChatScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Chat'),
),
body: ChatView(
roomId: 'ROOM_ID',
),
);
}
}