RCKMessageBubble.create constructor

RCKMessageBubble.create({
  1. required BuildContext context,
  2. required RCIMIWMessage message,
  3. bool showTime = false,
  4. RCKBubbleConfig? config,
  5. Map<RCIMIWMessageType, CustomChatItemBubbleBuilder>? customChatItemBubbleBuilders,
  6. MessageTapCallback? onTap,
  7. MessageDoubleTapCallback? onDoubleTap,
  8. MessageLongPressCallback? onLongPress,
  9. MessageSwipeCallback? onSwipe,
  10. MessageTapCallback? onAppendBubbleTap,
  11. MessageLongPressCallback? onAppendBubbleLongPress,
})

Implementation

factory RCKMessageBubble.create({
  required BuildContext context,
  required RCIMIWMessage message,
  bool showTime = false,
  RCKBubbleConfig? config, // 新增:气泡配置参数
  Map<RCIMIWMessageType, CustomChatItemBubbleBuilder>?
      customChatItemBubbleBuilders,
  MessageTapCallback? onTap,
  MessageDoubleTapCallback? onDoubleTap,
  MessageLongPressCallback? onLongPress,
  MessageSwipeCallback? onSwipe,
  MessageTapCallback? onAppendBubbleTap,
  MessageLongPressCallback? onAppendBubbleLongPress,
}) {
  RCKMessageBubble bubble;

  if (customChatItemBubbleBuilders != null &&
      customChatItemBubbleBuilders.containsKey(message.messageType)) {
    bubble = customChatItemBubbleBuilders[message.messageType]!(
        message: message,
        showTime: showTime,
        config: config,
        context: context);
  } else {
    switch (message.messageType) {
      case RCIMIWMessageType.text:
        bubble = RCKTextMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.unknown:
        bubble = RCKUnknownMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.voice:
        bubble = RCKVoiceMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe,
            onAppendBubbleTap: onAppendBubbleTap,
            onAppendBubbleLongPress: onAppendBubbleLongPress);
        break;
      case RCIMIWMessageType.image:
      case RCIMIWMessageType.gif:
        bubble = RCKImageMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.sight:
        bubble = RCKSightMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.file:
        bubble = RCKFileMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.reference:
        bubble = RCKReferenceMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe);
        break;
      case RCIMIWMessageType.recall:
        bubble = RCKRecallMessageBubble(
          message: message,
          showTime: showTime,
          config: config,
        );
        break;
      // 在这里添加其他消息类型的实现
      default:
        bubble = RCKTextMessageBubble(
            message: message,
            showTime: showTime,
            config: config,
            onTap: onTap,
            onDoubleTap: onDoubleTap,
            onLongPress: onLongPress,
            onSwipe: onSwipe); // 默认使用文本消息气泡
    }
  }

  return bubble;
}