From a4a866d3f53c1ecad44d6553a8ed090df47c3700 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 22 Jul 2025 12:58:14 +0800 Subject: [PATCH] fix #878 Signed-off-by: bggRGjQaUbCoE --- lib/common/widgets/scroll_physics.dart | 11 ++++++++--- lib/pages/member_video/controller.dart | 3 +++ lib/pages/member_video/view.dart | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/common/widgets/scroll_physics.dart b/lib/common/widgets/scroll_physics.dart index 88773c6b..ddf7a6f0 100644 --- a/lib/common/widgets/scroll_physics.dart +++ b/lib/common/widgets/scroll_physics.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/pages/member_video/controller.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; @@ -46,11 +47,14 @@ class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics { } class MemberVideoScrollPhysics extends AlwaysScrollableScrollPhysics { - const MemberVideoScrollPhysics({super.parent}); + const MemberVideoScrollPhysics({super.parent, required this.controller}); + + final MemberVideoCtr controller; @override MemberVideoScrollPhysics applyTo(ScrollPhysics? ancestor) { - return MemberVideoScrollPhysics(parent: buildParent(ancestor)); + return MemberVideoScrollPhysics( + parent: buildParent(ancestor), controller: controller); } @override @@ -60,7 +64,8 @@ class MemberVideoScrollPhysics extends AlwaysScrollableScrollPhysics { required bool isScrolling, required double velocity, }) { - if (newPosition.maxScrollExtent < oldPosition.maxScrollExtent) { + if (controller.reload) { + controller.reload = false; return 0; } return super.adjustPositionForNewDimensions( diff --git a/lib/pages/member_video/controller.dart b/lib/pages/member_video/controller.dart index 04cc7aa8..ac453278 100644 --- a/lib/pages/member_video/controller.dart +++ b/lib/pages/member_video/controller.dart @@ -213,8 +213,11 @@ class MemberVideoCtr } } + bool reload = false; + @override Future onReload() { + reload = true; isLocating.value = null; return super.onReload(); } diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index 95b0f772..850331cf 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -65,7 +65,7 @@ class _MemberVideoState extends State refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( - physics: const MemberVideoScrollPhysics(), + physics: MemberVideoScrollPhysics(controller: _controller), slivers: [ SliverPadding( padding: EdgeInsets.only(