Flutter聊天输入插件chat_input的使用

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

Flutter聊天输入插件chat_input的使用

Chat Input Widget 是一个功能丰富的 Flutter 库,旨在简化聊天界面的创建。它支持语音录制、图片附件和文本输入等功能,从而增强聊天屏幕中的用户交互。

特性

  • 语音录制:轻松录制并发送语音消息。
  • 图片附件:从相册选择或使用相机拍摄新照片并附加。
  • 文本输入:轻松地键入并发送文本消息。
  • 自定义化:根据您的应用设计自定义输入框的外观和行为。
  • 实时反馈:显示语音录制时长及滑动取消动画。
  • 触觉反馈:在关键操作期间提供振动反馈。

安装

要将 Chat Input Widget 集成到您的 Flutter 项目中,请按照以下步骤操作:

  1. 打开您的 pubspec.yaml 文件。
  2. 添加以下依赖项:
dependencies:
  chat_input_widget: ^1.0.0  # 替换为最新版本

运行 flutter pub get 来安装该包。

使用

在聊天屏幕中集成 Chat Input Widget,请参考以下示例代码:

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

class ChatScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('聊天屏幕'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView(
              // 显示聊天消息
            ),
          ),
          InputWidget(
            onSendAudio: (audioFile, duration) {
              // 处理发送语音消息
            },
            onSendText: (text) {
              // 处理发送文本消息
            },
            onSendImage: (selectedFile) {
              // 处理发送图片消息
            },
            // 如果需要,可以自定义其他属性
          ),
        ],
      ),
    );
  }
}

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 Chat Input Widget

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter 示例',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter 示例首页'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('聊天屏幕'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView(
              // 显示聊天消息
            ),
          ),
          InputWidget(
            onSendAudio: (audioFile, duration) {
              // 处理发送语音消息
            },
            onSendText: (text) {
              // 处理发送文本消息
            },
            onAttachmentClick: () {},
            // 如果需要,可以自定义其他属性
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用chat_input插件的一个示例代码案例。这个插件通常用于实现聊天界面的输入功能,比如文本输入、表情选择等。

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

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

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

接下来是一个简单的示例,展示如何在你的Flutter应用中使用chat_input插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ChatScreen(),
    );
  }
}

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

class _ChatScreenState extends State<ChatScreen> {
  final TextEditingController _textController = TextEditingController();
  List<ChatInputOption> _options = [
    ChatInputOption(
      type: ChatInputType.text,
      placeholder: '输入文字...',
    ),
    ChatInputOption(
      type: ChatInputType.emoji,
      placeholder: '选择表情...',
    ),
  ];

  String _selectedText = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('聊天输入示例'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            ChatInput(
              options: _options,
              onSelected: (ChatInputOption option, String result) {
                setState(() {
                  _selectedText = result;
                  _textController.text += result;
                });
              },
              controller: _textController,
            ),
            SizedBox(height: 16.0),
            Text(
              '当前输入内容: $_selectedText',
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 发送消息的逻辑
          print('发送消息: ${_textController.text}');
          _textController.clear();
        },
        tooltip: '发送',
        child: Icon(Icons.send),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个ChatScreen小部件,它包含一个ChatInput小部件。
  2. ChatInput小部件配置了两个选项:一个是文本输入,另一个是表情选择。
  3. 当用户选择一个选项时,onSelected回调函数会被调用,并将选中的结果添加到_textController的文本中。
  4. 我们在页面底部添加了一个FloatingActionButton,用于模拟发送消息的功能。

注意:

  • ChatInputOptiontype属性可以是ChatInputType.textChatInputType.emoji等,具体取决于插件支持的输入类型。
  • ChatInputonSelected回调会返回用户选择的选项和结果字符串。
  • 请确保你已经正确安装并导入了chat_input插件,并且它的版本与你的Flutter环境兼容。

这个示例提供了一个基本的框架,你可以根据自己的需求进一步扩展和自定义。

回到顶部