Flutter聊天消息编辑插件chat_composer的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter聊天消息编辑插件chat_composer的使用

chat_composer 是一个Flutter插件,用于轻松实现聊天输入框功能,支持文本、音频和其他媒体的发送。以下是如何设置和使用该插件的详细说明,并提供了一个完整的示例代码。

1. 插件介绍

chat_composer 提供了一个简洁的聊天输入框组件,用户可以通过它发送文本消息、录制音频并发送其他媒体文件。该插件适用于需要实现聊天功能的应用程序。

Gif

2. 设置

2.1 Android 设置
2.1.1 权限

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
2.1.2 AndroidX 支持
  1. gradle.properties 文件中添加以下配置:

    android.useAndroidX=true
    android.enableJetifier=true
    
  2. 确保在 android/app/build.gradle 文件中将 compileSdkVersion 设置为 33 或更高版本:

    android {
      compileSdkVersion 33
      ...
    }
    
  3. 确保在 android/app/build.gradle 文件中将 minSdkVersion 设置为 18 或更高版本:

    defaultConfig {
      minSdkVersion 18
      ...
    }
    
  4. 将所有 android. 依赖项替换为它们的 AndroidX 对应项(具体替换列表可以参考官方文档)。

2.2 iOS 设置

目前 chat_composer 的 iOS 版本正在开发中。在此之前,您可以通过购买咖啡来支持开发者的工作。

3. 添加依赖

pubspec.yaml 文件中添加 chat_composer 依赖:

dependencies:
  chat_composer: ^1.0.2 # 最新版本

4. 导入插件

在 Dart 文件中导入 chat_composer

import 'package:chat_composer/chat_composer.dart';

5. 使用示例

以下是一个完整的示例代码,展示了如何使用 chat_composer 实现一个简单的聊天界面:

import 'package:chat_composer/chat_composer.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 用于存储聊天记录的列表
  List<String> list = [];

  // 文本输入控制器
  TextEditingController con = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: const Text('Chat Composer'),
        ),
        body: Column(
          children: [
            // 聊天记录显示区域
            Expanded(
              child: ListView.builder(
                itemCount: list.length,
                itemBuilder: (_, pos) {
                  return ListTile(title: Text(list[pos]));
                },
              ),
            ),
            // 聊天输入框组件
            ChatComposer(
              controller: con, // 绑定文本输入控制器
              onReceiveText: (str) {
                // 当用户发送文本时触发
                setState(() {
                  list.add('TEXT : ${str!}'); // 将文本添加到聊天记录
                  con.text = ''; // 清空输入框
                });
              },
              onRecordEnd: (path) {
                // 当用户结束录音时触发
                setState(() {
                  list.add('AUDIO PATH : ${path!}'); // 将音频路径添加到聊天记录
                });
              },
              textPadding: EdgeInsets.zero, // 设置文本输入框的内边距
              leading: CupertinoButton(
                padding: EdgeInsets.zero,
                child: const Icon(
                  Icons.insert_emoticon_outlined, // 表情按钮
                  size: 25,
                  color: Colors.grey,
                ),
                onPressed: () {}, // 暂时不做处理
              ),
              actions: [
                CupertinoButton(
                  padding: EdgeInsets.zero,
                  child: const Icon(
                    Icons.attach_file_rounded, // 附件按钮
                    size: 25,
                    color: Colors.grey,
                  ),
                  onPressed: () {}, // 暂时不做处理
                ),
                CupertinoButton(
                  padding: EdgeInsets.zero,
                  child: const Icon(
                    Icons.camera_alt_rounded, // 相机按钮
                    size: 25,
                    color: Colors.grey,
                  ),
                  onPressed: () {}, // 暂时不做处理
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter聊天消息编辑插件chat_composer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter聊天消息编辑插件chat_composer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用chat_composer插件来创建聊天消息编辑功能的一个简单示例。chat_composer插件通常用于实现聊天应用中的消息输入框和发送按钮。

首先,你需要在pubspec.yaml文件中添加chat_composer依赖项:

dependencies:
  flutter:
    sdk: flutter
  chat_composer: ^最新版本号  # 请替换为实际最新版本号

然后运行flutter pub get来安装依赖项。

接下来,我们创建一个简单的聊天界面,其中包含一个消息输入框和一个发送按钮。下面是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:chat_composer/chat_composer.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Chat App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ChatScreen(),
    );
  }
}

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final TextEditingController _textController = TextEditingController();

  void _sendMessage() {
    // 这里你可以添加发送消息的逻辑,比如调用API
    String message = _textController.text;
    print("Sending message: $message");

    // 清空输入框
    _textController.clear();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Expanded(
              child: // 这里可以放置消息列表,例如使用ListView或RecyclerView
                  Container(
                    child: Center(
                      child: Text('Message List Here'),
                    ),
                  ),
            ),
            ChatComposer(
              textController: _textController,
              onSend: _sendMessage,
              options: ChatComposerOptions(
                sendButtonLabel: 'Send',
                placeholderText: 'Write a message...',
                maxLines: 4,  // 最大行数
                isEnabled: true,  // 是否启用发送按钮
              ),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 依赖项添加

    • pubspec.yaml文件中添加chat_composer依赖项。
  2. 主应用

    • MyApp是一个无状态的Widget,它创建了一个MaterialApp并设置了主题和主页。
  3. 聊天屏幕

    • ChatScreen是一个有状态的Widget,它管理聊天界面的状态。
    • _ChatScreenState类包含一个TextEditingController用于管理输入框的文本。
    • _sendMessage方法处理发送消息的逻辑(在这个例子中,它只是打印消息并清空输入框)。
  4. 聊天界面

    • 使用Scaffold构建聊天界面的基本布局,包括一个AppBar和一个Column
    • Column中包含一个扩展的Container(用于放置消息列表)和一个ChatComposer
    • ChatComposer配置了文本控制器、发送回调和选项(如发送按钮标签、占位符文本、最大行数和是否启用发送按钮)。

这个示例展示了如何使用chat_composer插件来创建一个简单的聊天消息编辑和发送功能。你可以根据需要进一步扩展这个示例,例如添加实际的消息列表、处理用户输入验证、集成后端服务等。

回到顶部