opt: load previous data

Closes #597

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-04 15:26:22 +08:00
parent f5c2bd47d5
commit 9a7d73cb6b
16 changed files with 58 additions and 17 deletions

View File

@@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactivevie
show SourceModel;
import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/common/widgets/video_card_h_member_video.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/member/info.dart';
@@ -179,7 +180,7 @@ class _HorizontalMemberPageState extends State<HorizontalMemberPage> {
color: Colors.transparent,
child: CustomScrollView(
controller: _controller.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
physics: const PositionRetainedScrollPhysics(),
slivers: [
_buildSliverHeader,
SliverPadding(
@@ -198,11 +199,12 @@ class _HorizontalMemberPageState extends State<HorizontalMemberPage> {
_controller.hasNext) {
_controller.onLoadMore();
}
final Item videoItem = loadingState.response[index];
return VideoCardHMemberVideo(
videoItem: loadingState.response[index],
key: ValueKey('${videoItem.param}'),
videoItem: videoItem,
bvid: _bvid,
onTap: () {
final Item videoItem = loadingState.response[index];
final status =
widget.videoIntroController.changeSeasonOrbangu(
null,

View File

@@ -51,7 +51,7 @@ import 'package:screen_brightness/screen_brightness.dart';
import '../../../services/shutdown_timer_service.dart';
import 'widgets/header_control.dart';
import 'package:PiliPlus/common/widgets/spring_physics.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
class VideoDetailPageV extends StatefulWidget {
const VideoDetailPageV({super.key});

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/dialog.dart';
import 'package:PiliPlus/common/widgets/icon_button.dart';
import 'package:PiliPlus/common/widgets/image_save.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/common/widgets/stat/stat.dart';
import 'package:PiliPlus/pages/common/common_collapse_slide_page.dart';
import 'package:flutter/material.dart';
@@ -126,7 +127,7 @@ class _MediaListPanelState
widget.onDelete != null && widget.mediaList.length > 1;
return ScrollablePositionedList.separated(
itemScrollController: _scrollController,
physics: const AlwaysScrollableScrollPhysics(),
physics: const PositionRetainedScrollPhysics(),
itemCount: widget.mediaList.length,
padding: EdgeInsets.only(
top: 7,
@@ -140,6 +141,7 @@ class _MediaListPanelState
widget.loadMoreMedia();
}
return SizedBox(
key: ValueKey('${item.aid}'),
height: 98,
child: InkWell(
onTap: () async {