Flutter即时通讯插件flutter_chat的使用
Flutter即时通讯插件flutter_chat的使用
flutter_chat
一个用于在Flutter应用中使用Firebase作为后端服务创建聊天应用的助手库。
Checkout Android app Demo
Checkout Web Demo
Support Development
如果您觉得这个项目对您有帮助或者您从源代码中学到了东西,并且想感谢我,可以考虑买杯咖啡给我喝。
Features
- 一对一聊天。
- 只能与添加的好友聊天(隐私)。
- 通过图库或相机分享图片。
- 用户在线状态。
- 支持Flutter Web。
Screenshots
Getting Started
添加依赖项
在你的pubspec.yaml
文件中添加以下依赖项:
dependencies:
flutter_chat: ^版本号
配置Firebase
将Firebase添加到您的Android和iOS项目中。
安全规则
存储安全规则
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
云Firestore安全规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
您可以根据需要修改这些安全规则。
部署云函数
部署提供的云函数(位于cloudFunction文件夹),用于展示用户的在线/离线状态。
初始化ChatData
创建一个StatefulWidget类并在其body
中调用方法。例如,在initState()
中初始化ChatData
:
[@override](/user/override)
void initState() {
super.initState();
ChatData.init("app name", context);
}
在build()
方法的body
中调用ChatData.widgetWelcomeScreen(context)
:
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: ChatWidget.getAppBar(ChatData.appName),
backgroundColor: Colors.white,
body: ChatData.widgetWelcomeScreen(context),
);
}
Flutter Web
如果要运行Flutter-Chat项目到Web上:
- 进入App,选择Firebase -> 设置并添加新的Web应用。
- 按照指示操作。
- 将
firebaseConfig
脚本添加到web
文件夹中的index.html
文件中。
享受Flutter的乐趣吧!
示例代码
以下是example/flutter_chat.dart
文件中的示例代码:
import 'package:flutter_chat/chatData.dart';
import 'package:flutter/material.dart';
import 'package:flutter_chat/chatWidget.dart';
// 创建一个StatefulWidget类
class WelcomeScreen extends StatefulWidget {
static const String id = "welcome_screen";
[@override](/user/override)
_WelcomeScreenState createState() => _WelcomeScreenState();
}
// 创建State类
class _WelcomeScreenState extends State<WelcomeScreen> {
// 初始化State时调用ChatData.init
[@override](/user/override)
void initState() {
super.initState();
ChatData.init("Just Chat", context);
}
// 构建UI
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: ChatWidget.getAppBar(ChatData.appName),
backgroundColor: Colors.white,
body: ChatData.widgetWelcomeScreen(context),
);
}
}
更多关于Flutter即时通讯插件flutter_chat的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件flutter_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_chat
是一个用于在 Flutter 应用中实现即时通讯(IM)功能的插件。它提供了丰富的 UI 组件和功能,使得开发者可以快速构建聊天界面。以下是如何使用 flutter_chat
插件的基本步骤:
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 flutter_chat
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_chat: ^4.0.0
然后运行 flutter pub get
来获取依赖。
2. 基本使用
flutter_chat
提供了一个 Chat
widget,你可以直接在你的 Flutter 应用中使用它来展示聊天界面。
import 'package:flutter/material.dart';
import 'package:flutter_chat/flutter_chat.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ChatScreen(),
);
}
}
class ChatScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Chat'),
),
body: Chat(
messages: [
Message(
id: '1',
text: 'Hello!',
author: User(id: '1', firstName: 'Alice'),
createdAt: DateTime.now(),
),
Message(
id: '2',
text: 'Hi there!',
author: User(id: '2', firstName: 'Bob'),
createdAt: DateTime.now(),
),
],
onSendPressed: (String text) {
// Handle sending message
},
user: User(id: '1', firstName: 'Alice'),
),
);
}
}
3. 消息数据模型
在上面的代码中,Message
和 User
是 flutter_chat
插件提供的模型类。Message
用于表示一条消息,User
用于表示用户。
-
Message:
id
: 消息的唯一标识符。text
: 消息内容。author
: 发送消息的用户。createdAt
: 消息发送的时间。
-
User:
id
: 用户的唯一标识符。firstName
: 用户的名字。
4. 处理消息发送
onSendPressed
是一个回调函数,当用户按下发送按钮时触发。你可以在这个回调函数中处理消息的发送逻辑,例如将消息发送到服务器或将其添加到本地的消息列表中。
onSendPressed: (String text) {
// Handle sending message
final message = Message(
id: DateTime.now().millisecondsSinceEpoch.toString(),
text: text,
author: User(id: '1', firstName: 'Alice'),
createdAt: DateTime.now(),
);
// Add the message to the list or send it to the server
setState(() {
messages.add(message);
});
},
5. 自定义样式
flutter_chat
插件允许你通过传递不同的参数来自定义聊天界面的样式。例如,你可以自定义消息气泡的颜色、文本样式等。
Chat(
messages: messages,
onSendPressed: (text) {
// Handle sending message
},
user: User(id: '1', firstName: 'Alice'),
bubbleBuilder: (BuildContext context, Message message) {
return Container(
padding: EdgeInsets.all(8.0),
margin: EdgeInsets.symmetric(vertical: 4.0),
decoration: BoxDecoration(
color: message.author.id == '1' ? Colors.blue : Colors.grey,
borderRadius: BorderRadius.circular(8.0),
),
child: Text(
message.text,
style: TextStyle(color: Colors.white),
),
);
},
)