opt scroll physics

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-06-20 13:31:28 +08:00
parent 452b54d124
commit 480bdffdaa
59 changed files with 210 additions and 195 deletions

View File

@@ -2,6 +2,8 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
show ReplyInfo, DetailListReply, Mode;
import 'package:PiliPlus/grpc/reply.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/common/common_controller.dart'
show CommonReloadMixin;
import 'package:PiliPlus/pages/common/publish/publish_route.dart';
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/pages/video/reply_new/view.dart';
@@ -14,7 +16,7 @@ import 'package:get/get.dart';
import 'package:super_sliver_list/super_sliver_list.dart';
class VideoReplyReplyController extends ReplyController
with GetSingleTickerProviderStateMixin {
with GetSingleTickerProviderStateMixin, CommonReloadMixin {
VideoReplyReplyController({
required this.hasRoot,
required this.id,

View File

@@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/colored_box_transition.dart';
import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/scaffold.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart';
import 'package:PiliPlus/common/widgets/view_safe_area.dart';
import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
@@ -189,7 +190,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
child: CustomScrollView(
key: ValueKey(scrollController.hashCode),
controller: scrollController,
physics: const AlwaysScrollableScrollPhysics(),
physics: ReloadScrollPhysics(controller: _controller),
slivers: [
if (!isDialogue) ...[
if ((widget.firstFloor ?? _controller.firstFloor.value)
@@ -284,11 +285,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
) {
final jumpIndex = _controller.index.value;
return switch (loadingState) {
Loading() => SliverPrototypeExtentList.builder(
prototypeItem: const VideoReplySkeleton(),
itemBuilder: (_, _) => const VideoReplySkeleton(),
itemCount: 8,
),
Loading() => replySkeleton,
Success(:final response!) => SuperSliverList.builder(
listController: _controller.listController,
itemBuilder: (context, index) {