Skip to content

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

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),

    );
  }
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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