Browse Source

feat(chat): 添加聊天输入栏面板控制功能

- 在 ChatInputBar 中添加静态方法 closePanels 用于关闭面板
- 实现 closeAllPanels 方法供外部调用关闭所有面板
- 在 ChatPage 中添加 GlobalKey 用于引用 ChatInputBar
- 点击空白区域时调用 ChatInputBar.closePanels 关闭底部面板
- 为 ChatInputBar 组件添加 key 属性以支持实例访问
master
Jolie 2 months ago
parent
commit
27f57ebb1c
2 changed files with 19 additions and 0 deletions
  1. 6
      lib/pages/message/chat_page.dart
  2. 13
      lib/widget/message/chat_input_bar.dart

6
lib/pages/message/chat_page.dart

@ -62,6 +62,9 @@ class _ChatPageState extends State<ChatPage> {
// //
final activeGift = ValueNotifier<int?>(null); final activeGift = ValueNotifier<int?>(null);
final giftNum = ValueNotifier<int>(1); final giftNum = ValueNotifier<int>(1);
// ChatInputBar GlobalKey
final GlobalKey<State<ChatInputBar>> _chatInputBarKey = GlobalKey<State<ChatInputBar>>();
@override @override
void initState() { void initState() {
@ -309,6 +312,8 @@ class _ChatPageState extends State<ChatPage> {
onTap: () { onTap: () {
// //
FocusManager.instance.primaryFocus?.unfocus(); FocusManager.instance.primaryFocus?.unfocus();
//
ChatInputBar.closePanels(_chatInputBarKey);
}, },
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
child: Column( child: Column(
@ -377,6 +382,7 @@ class _ChatPageState extends State<ChatPage> {
), ),
// 使 // 使
ChatInputBar( ChatInputBar(
key: _chatInputBarKey,
onSendMessage: (message) async { onSendMessage: (message) async {
await controller.sendMessage(message); await controller.sendMessage(message);
}, },

13
lib/widget/message/chat_input_bar.dart

@ -31,6 +31,14 @@ class ChatInputBar extends StatefulWidget {
@override @override
State<ChatInputBar> createState() => _ChatInputBarState(); State<ChatInputBar> createState() => _ChatInputBarState();
// key
static void closePanels(GlobalKey? key) {
final state = key?.currentState;
if (state != null && state is _ChatInputBarState) {
state.closeAllPanels();
}
}
} }
class _ChatInputBarState extends State<ChatInputBar> { class _ChatInputBarState extends State<ChatInputBar> {
@ -109,6 +117,11 @@ class _ChatInputBarState extends State<ChatInputBar> {
} }
} }
//
void closeAllPanels() {
_closeAllPanels();
}
@override @override
void initState() { void initState() {
super.initState(); super.initState();

Loading…
Cancel
Save