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

@@ -3,11 +3,14 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
import 'package:PiliPlus/grpc/reply.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/video/video_type.dart';
import 'package:PiliPlus/pages/common/common_controller.dart'
show CommonReloadMixin;
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/pages/video/controller.dart';
import 'package:get/get.dart';
class VideoReplyController extends ReplyController<MainListReply> {
class VideoReplyController extends ReplyController<MainListReply>
with CommonReloadMixin {
VideoReplyController({
required this.aid,
required this.videoType,

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart';
import 'package:PiliPlus/common/style.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/scroll_physics.dart';
import 'package:PiliPlus/common/widgets/sliver/sliver_floating_header.dart';
import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
show ReplyInfo;
@@ -86,7 +87,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
controller: widget.isNested
? null
: _videoReplyController.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
physics: ReloadScrollPhysics(controller: _videoReplyController),
key: const PageStorageKey(_VideoReplyPanelState),
slivers: [
SliverFloatingHeaderWidget(
@@ -173,10 +174,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
LoadingState<List<ReplyInfo>?> loadingState,
) {
return switch (loadingState) {
Loading() => SliverList.builder(
itemBuilder: (context, index) => const VideoReplySkeleton(),
itemCount: 5,
),
Loading() => replySkeleton,
Success(:final response) =>
response != null && response.isNotEmpty
? SliverList.builder(