web archive

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-03-23 18:28:38 +08:00
parent 2220372e4f
commit b4b3764e5f
39 changed files with 1005 additions and 306 deletions

View File

@@ -0,0 +1,55 @@
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/member.dart';
import 'package:PiliPlus/models/common/member/archive_sort_type_app.dart';
import 'package:PiliPlus/models/common/member/web_ss_type.dart';
import 'package:PiliPlus/models_new/member/season_web/archive.dart';
import 'package:PiliPlus/models_new/member/season_web/data.dart';
import 'package:PiliPlus/pages/member_video_web/base/controller.dart';
import 'package:get/get.dart';
class MemberSSWebCtr
extends BaseVideoWebCtr<SeasonWebData, SeasonArchive, ArchiveSortTypeApp> {
@override
final Rx<ArchiveSortTypeApp> order = Rx(.desc);
late final WebSsType _type;
late final Object _id;
@override
void onInit() {
final args = Get.arguments;
_type = args['type'];
_id = args['id'];
super.onInit();
}
@override
List<SeasonArchive>? getDataList(SeasonWebData response) {
return response.archives;
}
@override
bool customHandleResponse(
bool isRefresh,
Success<SeasonWebData> response,
) {
if (isRefresh) {
final data = response.response;
if (data.page?.total case final total?) {
count = total;
totalPage = (total / ps).ceil();
}
}
return false;
}
@override
Future<LoadingState<SeasonWebData>> customGetData() =>
MemberHttp.seasonSeriesWeb(
type: _type,
mid: mid,
id: _id,
ps: ps,
pn: page,
sort: order.value,
);
}

View File

@@ -0,0 +1,55 @@
import 'package:PiliPlus/models/common/member/archive_sort_type_app.dart';
import 'package:PiliPlus/models/common/member/web_ss_type.dart';
import 'package:PiliPlus/models_new/member/season_web/archive.dart';
import 'package:PiliPlus/models_new/member/season_web/data.dart';
import 'package:PiliPlus/pages/member_video_web/base/view.dart';
import 'package:PiliPlus/pages/member_video_web/season_series/controller.dart';
import 'package:PiliPlus/utils/grid.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class MemberSSWeb extends StatefulWidget {
const MemberSSWeb({super.key});
@override
State<MemberSSWeb> createState() => _MemberSSWebState();
static Future<void>? toMemberSSWeb({
required WebSsType type,
required Object id,
required Object mid,
required String name,
}) {
return Get.toNamed(
'/ssWeb',
arguments: {
'type': type,
'id': id,
'mid': mid,
'name': name,
},
);
}
}
class _MemberSSWebState
extends
BaseVideoWebState<
MemberSSWeb,
SeasonWebData,
SeasonArchive,
ArchiveSortTypeApp
>
with GridMixin {
@override
late final MemberSSWebCtr controller;
@override
void initState() {
super.initState();
controller = Get.put(MemberSSWebCtr(), tag: name);
}
@override
List<ArchiveSortTypeApp> get values => ArchiveSortTypeApp.values;
}