Flutter聊天界面插件chatbar的使用

chatbar 是一个用于在您的 Flutter 应用程序中添加可定制的 WhatsApp、Hangout 或 Messenger 风格聊天应用工具栏的插件。

示例

Gradient 支持

Gradient支持

自定义颜色

自定义颜色

💻 安装

pubspec.yaml 文件的 dependencies: 部分添加以下行:

chatbar: <最新版本>

然后在项目中导入:

import 'package:chatbar/chatbar.dart';

API & 参数

以下是 ChatBar 的参数及其说明:

属性 类型 概要
profilePic Image 聊天用户的头像
username String 聊天用户的名称
status Widget 当前与用户聊天的状态
gradient Gradient 用于在聊天工具栏表面应用渐变
color Color 用于在聊天工具栏上应用纯色背景
onprofileimagetap Function 可以监听点击头像的事件,例如显示头像预览
actions List 类似于原生 AppBar 小部件的 actions 属性
usernamestyle TextStyle 用于自定义聊天用户名的样式
statusstyle TextStyle 用于自定义聊天状态的样式
lastseen String 用户上次在线的时间
backbuttoncolor Color 返回按钮的自定义颜色
backutton IconButton 如果您想要自定义返回按钮
height Double 增加聊天工具栏的高度
actionspacer Int 增加动作按钮和聊天用户容器之间的间隙(不推荐)

示例代码

以下是一个完整的示例代码,展示如何使用 chatbar 插件创建一个聊天界面工具栏:

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final navigatorKey = GlobalKey<NavigatorState>();

  void show() {
    final context = navigatorKey.currentState.overlay.context;
    final dialog = AlertDialog(
      content: Container(
        child: Image.network(
            "https://scontent.fdel8-1.fna.fbcdn.net/v/t1.0-9/55786278_1694407227328700_8743813181337501696_n.jpg?_nc_cat=101&_nc_oc=AQnH_MY2ofbfcVeo2-QeS6P10Kg88RnI_zTh78UQGpzY8wVasLyF4hF2_JH0bOB2b8c&_nc_ht=scontent.fdel8-1.fna&oh=ec6eedc22c681f49fa96714991fca364&oe=5D9BC9A5"),
      ),
    );
    showDialog(context: context, builder: (x) => dialog);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorKey: navigatorKey,
      home: Scaffold(
        appBar: ChatBar(
          onprofileimagetap: () => show(), // 点击头像时显示对话框
          profilePic: Image.network(
            'https://lh3.googleusercontent.com/proxy/wRhhKOz4fdOYlT-mUGTOYJrhTqr3VJ9B9A9hMbvFLRZ-PYlpeY-FRrEIwEvWkkk1wm3iYjhRfWctbG4wDw5XMn1GX6A7TBWeM6ybWnC4QH-iilfTtjKA',
            height: 50,
            width: 50,
            fit: BoxFit.contain,
          ),
          username: "Shivansh Talwar",
          status: Text(''),
          color: Colors.green.shade400, // 设置背景颜色为绿色
          backbuttoncolor: Colors.white, // 设置返回按钮颜色为白色
          backbutton: IconButton(
            icon: Icon(Icons.keyboard_arrow_left), // 自定义返回按钮图标
            onPressed: () {},
            color: Colors.white,
          ),
          actions: [
            IconButton(
              onPressed: () {},
              icon: Icon(Icons.phone), // 添加电话图标
              color: Colors.white,
            ),
            IconButton(
              onPressed: () {},
              icon: Icon(Icons.videocam), // 添加视频通话图标
              color: Colors.white,
            ),
            PopupMenuButton<String>(
              icon: Icon(
                Icons.more_vert,
                color: Colors.white,
              ), // 添加更多选项图标
              enabled: true,
              onSelected: (str) {},
              itemBuilder: (BuildContext context) => [
                const PopupMenuItem<String>(
                  value: 'View Contact',
                  child: Text('View Contact'), // 添加查看联系人选项
                ),
                const PopupMenuItem<String>(
                  value: 'Media',
                  child: Text('Media'), // 添加媒体选项
                ),
                const PopupMenuItem<String>(
                  value: 'Search',
                  child: Text('Search'), // 添加搜索选项
                ),
                const PopupMenuItem<String>(
                  value: 'Wallpaper',
                  child: Text('Wallpaper'), // 添加壁纸选项
                ),
              ],
            )
          ],
        ),
        body: Center(
          child: Text(''), // 中心显示空文本
        ),
      ),
    );
  }
}

作者

  • Shivansh Talwar

如何贡献

  1. Fork 该项目。
  2. 创建一个新的分支 (git checkout -b my-new-feature)。
  3. 提交更改 (git commit -am 'Add some feature')。
  4. 推送到分支 (git push origin my-new-feature)。
  5. 创建新的 Pull Request。

许可证

版权所有 (c) 2019 Shivansh Talwar

特此免费授予任何人获得本软件及相关文档文件(“软件”)副本的权利,无限制地使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许他人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在所有副本或实质性部分中。

软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或其使用或其他交易而引起的任何索赔、损害或其他责任负责。
1 回复

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


chatbar 是一个用于 Flutter 的聊天界面插件,它可以帮助开发者快速构建一个功能丰富的聊天界面。以下是如何使用 chatbar 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  chatbar: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 chatbar 包:

import 'package:chatbar/chatbar.dart';

3. 使用 ChatBar 组件

ChatBar 是一个用于输入消息的组件,通常放置在聊天界面的底部。你可以将它与其他组件(如 ListViewStreamBuilder)结合使用来构建完整的聊天界面。

以下是一个简单的示例:

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

class ChatScreen extends StatefulWidget {
  [@override](/user/override)
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final List<String> messages = [];

  void _sendMessage(String message) {
    setState(() {
      messages.add(message);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: messages.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(messages[index]),
                );
              },
            ),
          ),
          ChatBar(
            onSend: _sendMessage,
          ),
        ],
      ),
    );
  }
}

4. 自定义 ChatBar

ChatBar 提供了多种自定义选项,例如:

  • hintText: 输入框的提示文本。
  • sendButtonColor: 发送按钮的颜色。
  • textInputAction: 输入框的键盘动作。
  • onSend: 当用户发送消息时触发的回调。

例如:

ChatBar(
  hintText: 'Type a message...',
  sendButtonColor: Colors.blue,
  textInputAction: TextInputAction.send,
  onSend: (message) {
    print('Message sent: $message');
  },
)

5. 处理消息

onSend 回调中,你可以处理用户发送的消息。例如,将消息添加到消息列表中,或者通过 WebSocket 发送到服务器。

6. 构建完整的聊天界面

你可以将 ChatBar 与其他组件(如 ListViewStreamBuilder 等)结合使用,构建一个完整的聊天界面。例如,使用 ListView 显示消息列表,使用 StreamBuilder 实时更新消息。

7. 运行应用

完成上述步骤后,运行你的 Flutter 应用,你应该能够看到一个简单的聊天界面,并且可以通过 ChatBar 发送消息。

8. 进一步扩展

你可以根据需要进一步扩展聊天界面,例如添加消息气泡、时间戳、用户头像等功能。chatbar 插件提供了一个基础的消息输入组件,你可以在此基础上构建更复杂的聊天界面。

9. 参考文档

更多详细信息和高级用法,请参考 chatbar 插件的官方文档或 GitHub 仓库。

示例代码

以下是一个完整的示例代码:

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

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

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

class ChatScreen extends StatefulWidget {
  [@override](/user/override)
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final List<String> messages = [];

  void _sendMessage(String message) {
    setState(() {
      messages.add(message);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: messages.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(messages[index]),
                );
              },
            ),
          ),
          ChatBar(
            onSend: _sendMessage,
          ),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!