Flutter聊天界面插件chatbar的使用
chatbar
是一个用于在您的 Flutter 应用程序中添加可定制的 WhatsApp、Hangout 或 Messenger 风格聊天应用工具栏的插件。
示例
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
如何贡献
- Fork 该项目。
- 创建一个新的分支 (
git checkout -b my-new-feature
)。 - 提交更改 (
git commit -am 'Add some feature'
)。 - 推送到分支 (
git push origin my-new-feature
)。 - 创建新的 Pull Request。
许可证
版权所有 (c) 2019 Shivansh Talwar
特此免费授予任何人获得本软件及相关文档文件(“软件”)副本的权利,无限制地使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许他人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在所有副本或实质性部分中。
软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或其使用或其他交易而引起的任何索赔、损害或其他责任负责。
更多关于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
是一个用于输入消息的组件,通常放置在聊天界面的底部。你可以将它与其他组件(如 ListView
或 StreamBuilder
)结合使用来构建完整的聊天界面。
以下是一个简单的示例:
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
与其他组件(如 ListView
、StreamBuilder
等)结合使用,构建一个完整的聊天界面。例如,使用 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,
),
],
),
);
}
}