Flutter即时通讯插件flutter_chat的使用

Flutter即时通讯插件flutter_chat的使用

flutter_chat

一个用于在Flutter应用中使用Firebase作为后端服务创建聊天应用的助手库。

Checkout Android app Demo

Checkout Web Demo

Just Chat Web Demo

Support Development

如果您觉得这个项目对您有帮助或者您从源代码中学到了东西,并且想感谢我,可以考虑买杯咖啡给我喝。

PayPal

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上:

  1. 进入App,选择Firebase -> 设置并添加新的Web应用。
  2. 按照指示操作。
  3. 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

1 回复

更多关于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. 消息数据模型

在上面的代码中,MessageUserflutter_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),
      ),
    );
  },
)
回到顶部