-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
复现过程以及代码,不使用自定义气泡后自定义的点击事件才会生效:
import 'package:amadesu/ui/widgets/messages/pull_down_buttom.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:flutter_im_list/core/chat_controller.dart';
import 'package:flutter_im_list/models/message_model.dart';
import 'package:flutter_im_list/widget/chat_list_widget.dart';
import 'package:pull_down_button/pull_down_button.dart';
import 'borders/bubble_widget.dart';
class MessageList extends GetView {
String avatar;
int characterId;
MessageList(
{super.key, required int this.characterId, required String this.avatar});
@override
Widget build(BuildContext context) {
// 初始化显示控制器
var chatController = ChatController(
initialMessageList: _messageList,
timePellet: 60,
scrollController: ScrollController(),
messageWidgetBuilder: customMessageBubble
);
return ChatList(
chatController: chatController,
onBubbleTap: customPullDown,
);
}
// 自定义气泡的构建函数
Widget customMessageBubble(MessageModel message) {
String text = message.content;
return Bubble(
margin: BubbleEdges.fromLTRB(10, 0, 0, 0),
stick: true,
nip: BubbleNip.leftTop,
alignment: Alignment.topLeft,
child: Text(message.content));
}
// 自定义下拉菜单方法
Future<void> customPullDown(MessageModel message, BuildContext context) async {
PullDown pullDown = PullDown(message: message, context: context);
print('Bubble tapped: ${message.content}'); // 打印查看是否触发
return await pullDown.showPullDown();
}
// 示例文本数据
final List<MessageModel> _messageList = [
MessageModel(
id: 1,
content: "介绍一下chatgpt",
ownerType: OwnerType.sender,
createdAt: 1696142392000,
// avatar: 'assets/background/jine_avatar.jpg',
ownerName: "User"),
MessageModel(
id: 2,
content:
"好的",
ownerType: OwnerType.receiver,
createdAt: 1696142393000,
// avatar: 'assets/background/jine_avatar.jpg',
ownerName: "AI"),
];
}
其中 customPullDown中的print部分无法打印。
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:pull_down_button/pull_down_button.dart';
import 'package:flutter_im_list/core/chat_controller.dart';
import 'package:flutter_im_list/models/message_model.dart';
import 'package:flutter_im_list/widget/chat_list_widget.dart';
class PullDown{
final MessageModel message;
final BuildContext context;
const PullDown({required this.message, required this.context});
showPullDown() async {
return await showPullDownMenu(
context: context,
items: [
PullDownMenuItem(
title: 'Menu item',
onTap: () {},
),
PullDownMenuItem(
title: 'Menu item 2',
onTap: () {},
),
],
position: const Rect.fromLTRB(0, 0, 0, 0),
);
}
}
Metadata
Metadata
Assignees
Labels
No labels