Files
PiliPlus/lib/pages/rcmd/controller.dart
My-Responsitories 3c34e43827 opt: non null (#1091)
* opt: type

* opt: type 2

* opt: type 3
2025-08-23 10:25:41 +00:00

56 lines
1.5 KiB
Dart

import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/model_rec_video_item.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
class RcmdController
extends
CommonListController<
List<BaseRecVideoItemModel>,
BaseRecVideoItemModel
> {
late bool enableSaveLastData = Pref.enableSaveLastData;
final bool appRcmd = Pref.appRcmd;
int? lastRefreshAt;
late bool savedRcmdTip = Pref.savedRcmdTip;
@override
void onInit() {
super.onInit();
page = 0;
queryData();
}
@override
Future<LoadingState<List<BaseRecVideoItemModel>>> customGetData() {
return appRcmd
? VideoHttp.rcmdVideoListApp(freshIdx: page)
: VideoHttp.rcmdVideoList(freshIdx: page, ps: 20);
}
@override
void handleListResponse(List<BaseRecVideoItemModel> dataList) {
if (enableSaveLastData && page == 0 && loadingState.value.isSuccess) {
final currentList = loadingState.value.data;
if (currentList?.isNotEmpty == true) {
if (savedRcmdTip) {
lastRefreshAt = dataList.length;
}
if (currentList!.length > 500) {
currentList.removeRange(50, currentList.length);
}
dataList.addAll(currentList);
}
}
}
@override
Future<void> onRefresh() {
page = 0;
isEnd = false;
return queryData();
}
}