diff --git a/lib/common/widgets/chat_list_view.dart b/lib/common/widgets/chat_list_view.dart index 84c7efc89..540aaef0c 100644 --- a/lib/common/widgets/chat_list_view.dart +++ b/lib/common/widgets/chat_list_view.dart @@ -359,6 +359,8 @@ class RenderSliverChatList extends RenderSliverMultiBoxAdaptor } } +const double kChatListPadding = 14.0; + /// from https://github.com/fluttercandies/extended_list mixin ExtendedRenderObjectMixin on RenderSliverMultiBoxAdaptor { void handleCloseToTrailingBegin() { @@ -366,11 +368,10 @@ mixin ExtendedRenderObjectMixin on RenderSliverMultiBoxAdaptor { } double handleCloseToTrailingEnd(double endScrollOffset) { - if (endScrollOffset < constraints.remainingPaintExtent) { - final double distance = - constraints.remainingPaintExtent - endScrollOffset; - _closeToTrailingDistance = distance; - return constraints.remainingPaintExtent; + final extent = constraints.remainingPaintExtent - kChatListPadding; + if (endScrollOffset < extent) { + _closeToTrailingDistance = extent - endScrollOffset; + return extent; } return endScrollOffset; } diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index be08256ea..baa756734 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -311,15 +311,15 @@ class _VideoDetailPageVState extends State } plPlayerController = videoDetailController.plPlayerController; videoDetailController.autoPlay = true; + plPlayerController! + ..addStatusLister(playerListener) + ..addPositionListener(positionListener); if (videoDetailController.plPlayerController.preInitPlayer) { await plPlayerController!.play(); } else { await videoDetailController.playerInit(autoplay: true); } if (!mounted || !isShowing) return; - plPlayerController! - ..addStatusLister(playerListener) - ..addPositionListener(positionListener); await plPlayerController!.autoEnterFullscreen(); } diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index dd411ae68..3422a01a8 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -48,6 +48,7 @@ class WhisperDetailController extends CommonListController { } else { ackSessionMsg(msgs.last.msgSeqno.toInt()); } + msgs.removeWhere((e) => e.msgType == MsgType.EN_MSG_TYPE_DRAW_BACK.value); eInfos ??= []; eInfos!.addAll(response.response.eInfos); } diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index e62751487..7cd2dbd52 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -156,7 +156,7 @@ class _WhisperDetailPageState response != null && response.isNotEmpty ? ChatListView.separated( itemCount: response.length, - padding: const EdgeInsets.all(14), + padding: const .all(kChatListPadding), physics: const AlwaysScrollableScrollPhysics( parent: ClampingScrollPhysics(), ), diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index 5930c9769..ced1fca6d 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -55,10 +55,10 @@ class ChatItem extends StatelessWidget { @override Widget build(BuildContext context) { final msgType = item.msgType; - final isRevoke = msgType == MsgType.EN_MSG_TYPE_DRAW_BACK.value; // 撤回消息 - if (isRevoke) { - return const SizedBox.shrink(); - } + // final isRevoke = msgType == MsgType.EN_MSG_TYPE_DRAW_BACK.value; // 撤回消息 + // if (isRevoke) { + // return const SizedBox.shrink(); + // } late final ThemeData theme = Theme.of(context); late final Color textColor = isOwner