diff --git a/lib/controller/discover/svga_player_manager.dart b/lib/controller/discover/svga_player_manager.dart index 85cb034..0dc2fdb 100644 --- a/lib/controller/discover/svga_player_manager.dart +++ b/lib/controller/discover/svga_player_manager.dart @@ -52,7 +52,7 @@ class SvgaPlayerManager extends GetxController { /// 标记当前动画播放完成 void onAnimationFinished() { - print('✅ SVGA 动画播放完成'); + print('✅ SVGA 动画播放完成55'); isPlaying.value = false; currentItem.value = null; // 播放下一个 @@ -78,6 +78,7 @@ class SvgaPlayerManager extends GetxController { void clearQueue() { stop(); _animationQueue.clear(); + Get.log('clearQueue>>>81'); } /// 获取队列长度 diff --git a/lib/controller/message/chat_controller.dart b/lib/controller/message/chat_controller.dart index 59472b1..1652326 100644 --- a/lib/controller/message/chat_controller.dart +++ b/lib/controller/message/chat_controller.dart @@ -913,21 +913,7 @@ class ChatController extends GetxController { _refreshConversationList(); if(_isGiftMessage(message) && Get.currentRoute == '/ChatPage'){ Get.log('message915: $message'); - final giftInfo = _parseGiftInfo(message); - var svgaFile = '', giftProductId = ''; - if (giftInfo != null) { - svgaFile = giftInfo['svgaFile']?.toString() ?? ''; - giftProductId = giftInfo['giftProductId']?.toString() ?? ''; - } - if(svgaFile.isNotEmpty){ - final svgaManager = SvgaPlayerManager.instance; - svgaManager.addToQueue( - SvgaAnimationItem( - svgaFile: svgaFile, - giftProductId: giftProductId, - ), - ); - } + playSvga(message); } if (Get.isLogEnable) { Get.log('收到新消息并添加到列表: ${message.msgId}'); @@ -1184,6 +1170,24 @@ class ChatController extends GetxController { } } + playSvga(EMMessage message){ + final giftInfo = _parseGiftInfo(message); + var svgaFile = '', giftProductId = ''; + if (giftInfo != null) { + svgaFile = giftInfo['svgaFile']?.toString() ?? ''; + giftProductId = giftInfo['giftProductId']?.toString() ?? ''; + } + if(svgaFile.isNotEmpty){ + final svgaManager = SvgaPlayerManager.instance; + svgaManager.addToQueue( + SvgaAnimationItem( + svgaFile: svgaFile, + giftProductId: giftProductId, + ), + ); + } + } + /// 重发消息 Future resendMessage(EMMessage failedMessage) async { try { diff --git a/lib/pages/message/chat_page.dart b/lib/pages/message/chat_page.dart index d562bef..b856852 100644 --- a/lib/pages/message/chat_page.dart +++ b/lib/pages/message/chat_page.dart @@ -1,3 +1,4 @@ +import 'package:dating_touchme_app/controller/discover/svga_player_manager.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/widget/live/svga_player_widget.dart'; import 'package:flutter/material.dart'; @@ -243,6 +244,8 @@ class _ChatPageState extends State { } await VoicePlayerManager.instance.stop(); if (!didPop) { + final svgaManager = SvgaPlayerManager.instance; + svgaManager.clearQueue(); Get.back(); } }, @@ -414,7 +417,7 @@ class _ChatPageState extends State { ), ), ), - const SvgaPlayerWidget(), + SvgaPlayerWidget(), ], ), diff --git a/lib/widget/message/gift_item.dart b/lib/widget/message/gift_item.dart index bc5289d..25f0972 100644 --- a/lib/widget/message/gift_item.dart +++ b/lib/widget/message/gift_item.dart @@ -16,6 +16,7 @@ class GiftItem extends StatelessWidget { final bool showTime; final String formattedTime; final VoidCallback? onResend; + final VoidCallback? onSvgaPlay; const GiftItem({ required this.message, @@ -23,6 +24,7 @@ class GiftItem extends StatelessWidget { required this.showTime, required this.formattedTime, this.onResend, + this.onSvgaPlay, super.key, }); @@ -230,18 +232,7 @@ class GiftItem extends StatelessWidget { ], ), ).onTap((){ - final svgaFile = _getGiftSvga(); - Get.log(giftInfo.toString()); - Get.log('${message.status}'); - if ((message.status == MessageStatus.SUCCESS || message.status == MessageStatus.PROGRESS) && svgaFile.isNotEmpty) { - final svgaManager = SvgaPlayerManager.instance; - svgaManager.addToQueue( - SvgaAnimationItem( - svgaFile: svgaFile, - giftProductId: giftInfo['giftProductId']?.toString() ?? '', - ), - ); - } + onSvgaPlay?.call(); }), if (isSentByMe) SizedBox(width: 8.w), if (isSentByMe) _buildAvatar(), diff --git a/lib/widget/message/message_item.dart b/lib/widget/message/message_item.dart index 31e86a5..fa16013 100644 --- a/lib/widget/message/message_item.dart +++ b/lib/widget/message/message_item.dart @@ -104,6 +104,14 @@ class MessageItem extends StatelessWidget { print('重发消息失败: $e'); } }, + onSvgaPlay: (){ + try { + final controller = chatController ?? Get.find(); + controller.playSvga(message); + } catch (e) { + print('重发消息失败: $e'); + } + }, ); }