diff --git a/lib/common/widgets/scroll_physics.dart b/lib/common/widgets/scroll_physics.dart index a7e11c8b..dcae5d34 100644 --- a/lib/common/widgets/scroll_physics.dart +++ b/lib/common/widgets/scroll_physics.dart @@ -45,14 +45,13 @@ class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics { SpringDescription get spring => CustomSpringDescription(); } -class PositionRetainedScrollPhysics extends AlwaysScrollableScrollPhysics { - const PositionRetainedScrollPhysics({super.parent, this.shouldRetain = true}); - - final bool shouldRetain; +class MemberVideoScrollPhysics extends AlwaysScrollableScrollPhysics { + const MemberVideoScrollPhysics( + {super.parent = const ClampingScrollPhysics()}); @override - PositionRetainedScrollPhysics applyTo(ScrollPhysics? ancestor) { - return PositionRetainedScrollPhysics(parent: buildParent(ancestor)); + MemberVideoScrollPhysics applyTo(ScrollPhysics? ancestor) { + return MemberVideoScrollPhysics(parent: buildParent(ancestor)); } @override @@ -62,20 +61,15 @@ class PositionRetainedScrollPhysics extends AlwaysScrollableScrollPhysics { required bool isScrolling, required double velocity, }) { - final position = super.adjustPositionForNewDimensions( + if (newPosition.maxScrollExtent < oldPosition.maxScrollExtent) { + return 0; + } + return super.adjustPositionForNewDimensions( oldPosition: oldPosition, newPosition: newPosition, isScrolling: isScrolling, velocity: velocity, ); - - late final diff = newPosition.maxScrollExtent - oldPosition.maxScrollExtent; - - if (shouldRetain && oldPosition.pixels == 0 && diff > 0) { - return position + diff; - } else { - return position; - } } } diff --git a/lib/pages/member_video/controller.dart b/lib/pages/member_video/controller.dart index ee78c842..bf508311 100644 --- a/lib/pages/member_video/controller.dart +++ b/lib/pages/member_video/controller.dart @@ -22,7 +22,6 @@ class MemberVideoCtr required this.seriesId, this.username, this.title, - this.heroTag, }); ContributeType type; @@ -44,9 +43,6 @@ class MemberVideoCtr bool? isLoadPrevious; bool? hasPrev; - String? heroTag; - // late final MemberController _ctr = Get.find(tag: heroTag); - @override Future onRefresh() async { if (isLocating.value == true) { @@ -226,10 +222,6 @@ class MemberVideoCtr @override Future onReload() { isLocating.value = null; - // if (_ctr.key.currentState?.outerController.hasClients == true) { - // _ctr.key.currentState!.outerController - // .jumpTo(_ctr.key.currentState!.outerController.offset); - // } return super.onReload(); } } diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index 40d7a147..0e201665 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_card_h.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; +import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h_member_video.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/member/contribute_type.dart'; @@ -49,7 +50,6 @@ class _MemberVideoState extends State seriesId: widget.seriesId, username: Get.find(tag: widget.heroTag).username, title: widget.title, - heroTag: widget.heroTag, ), tag: '${widget.heroTag}${widget.type.name}${widget.seasonId}${widget.seriesId}', @@ -65,10 +65,7 @@ class _MemberVideoState extends State refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( - // physics: PositionRetainedScrollPhysics( - // shouldRetain: _controller.isLocating.value == true, - // parent: const ClampingScrollPhysics(), - // ), + physics: const MemberVideoScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( @@ -121,7 +118,7 @@ class _MemberVideoState extends State (context, index) { return const VideoCardHSkeleton(); }, - childCount: 4, + childCount: 10, ), ), ),