Skip to content

使用了自定义气泡之后配置的自定义点击/长按事件失效 #1

@E-sion

Description

@E-sion

复现过程以及代码,不使用自定义气泡后自定义的点击事件才会生效:

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions