mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28:18 +08:00
opt handle res
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/member.dart';
|
||||
import 'package:PiliPlus/models/member_ss/item.dart';
|
||||
import 'package:PiliPlus/models/member_ss/season.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
|
||||
class SeasonSeriesController extends CommonListController {
|
||||
class SeasonSeriesController
|
||||
extends CommonListController<MemberSsData, MemberSsModel> {
|
||||
SeasonSeriesController(this.mid);
|
||||
final int mid;
|
||||
int? count;
|
||||
@@ -14,9 +17,10 @@ class SeasonSeriesController extends CommonListController {
|
||||
}
|
||||
|
||||
@override
|
||||
List? getDataList(response) {
|
||||
return ((response['seasons_list'] as List?) ?? []) +
|
||||
((response['series_list'] as List?) ?? []);
|
||||
List<MemberSsModel>? getDataList(MemberSsData response) {
|
||||
count = response.page?.total;
|
||||
return (response.seasonsList ?? <MemberSsModel>[]) +
|
||||
(response.seriesList ?? <MemberSsModel>[]);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -27,13 +31,8 @@ class SeasonSeriesController extends CommonListController {
|
||||
}
|
||||
|
||||
@override
|
||||
bool customHandleResponse(bool isRefresh, Success response) {
|
||||
count = response.response['page']?['total'];
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<LoadingState> customGetData() => MemberHttp.seasonSeriesList(
|
||||
Future<LoadingState<MemberSsData>> customGetData() =>
|
||||
MemberHttp.seasonSeriesList(
|
||||
mid: mid,
|
||||
pn: page,
|
||||
);
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:PiliPlus/common/skeleton/video_card_h.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/member/contribute_type.dart';
|
||||
import 'package:PiliPlus/models/member_ss/season.dart' show MemberSsModel;
|
||||
import 'package:PiliPlus/pages/member_season_series/controller.dart';
|
||||
import 'package:PiliPlus/pages/member_season_series/widget/season_series_card.dart';
|
||||
import 'package:PiliPlus/pages/member_video/view.dart';
|
||||
@@ -52,7 +53,7 @@ class _SeasonSeriesPageState extends State<SeasonSeriesPage>
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(LoadingState<List<dynamic>?> loadingState) {
|
||||
Widget _buildBody(LoadingState<List<MemberSsModel>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => SliverGrid(
|
||||
gridDelegate: Grid.videoCardHDelegate(context),
|
||||
@@ -71,18 +72,17 @@ class _SeasonSeriesPageState extends State<SeasonSeriesPage>
|
||||
if (index == response.length - 1) {
|
||||
_controller.onLoadMore();
|
||||
}
|
||||
dynamic item = response[index];
|
||||
MemberSsModel item = response[index];
|
||||
return SeasonSeriesCard(
|
||||
item: item,
|
||||
onTap: () {
|
||||
bool isSeason = item['meta']['season_id'] != null;
|
||||
dynamic id = isSeason
|
||||
? item['meta']['season_id']
|
||||
: item['meta']['series_id'];
|
||||
bool isSeason = item.meta!.seasonId != null;
|
||||
dynamic id =
|
||||
isSeason ? item.meta!.seasonId : item.meta!.seriesId;
|
||||
Get.to(
|
||||
Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(item['meta']['name']),
|
||||
title: Text(item.meta!.name!),
|
||||
),
|
||||
body: SafeArea(
|
||||
top: false,
|
||||
@@ -95,7 +95,7 @@ class _SeasonSeriesPageState extends State<SeasonSeriesPage>
|
||||
mid: widget.mid,
|
||||
seasonId: isSeason ? id : null,
|
||||
seriesId: isSeason ? null : id,
|
||||
title: item['meta']['name'],
|
||||
title: item.meta!.name,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -106,9 +106,7 @@ class _SeasonSeriesPageState extends State<SeasonSeriesPage>
|
||||
childCount: response!.length,
|
||||
),
|
||||
)
|
||||
: HttpError(
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
: HttpError(onReload: _controller.onReload),
|
||||
Error(:var errMsg) => HttpError(
|
||||
errMsg: errMsg,
|
||||
onReload: _controller.onReload,
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/models/member_ss/season.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@@ -11,15 +12,15 @@ class SeasonSeriesCard extends StatelessWidget {
|
||||
required this.item,
|
||||
required this.onTap,
|
||||
});
|
||||
final dynamic item;
|
||||
final MemberSsModel item;
|
||||
final VoidCallback onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWell(
|
||||
onLongPress: () => imageSaveDialog(
|
||||
title: item['meta']['name'],
|
||||
cover: item['meta']['cover'],
|
||||
title: item.meta!.name,
|
||||
cover: item.meta!.cover,
|
||||
),
|
||||
onTap: onTap,
|
||||
child: Padding(
|
||||
@@ -41,13 +42,13 @@ class SeasonSeriesCard extends StatelessWidget {
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
NetworkImgLayer(
|
||||
src: item['meta']['cover'],
|
||||
src: item.meta!.cover,
|
||||
width: maxWidth,
|
||||
height: maxHeight,
|
||||
),
|
||||
PBadge(
|
||||
text:
|
||||
'${item['meta']['season_id'] != null ? '合集' : '列表'}: ${item['meta']['total']}',
|
||||
'${item.meta!.seasonId != null ? '合集' : '列表'}: ${item.meta!.total}',
|
||||
bottom: 6.0,
|
||||
right: 6.0,
|
||||
),
|
||||
@@ -71,7 +72,7 @@ class SeasonSeriesCard extends StatelessWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
item['meta']['name'],
|
||||
item.meta!.name!,
|
||||
textAlign: TextAlign.start,
|
||||
style: TextStyle(
|
||||
fontSize: theme.textTheme.bodyMedium!.fontSize,
|
||||
@@ -83,7 +84,7 @@ class SeasonSeriesCard extends StatelessWidget {
|
||||
),
|
||||
const Spacer(),
|
||||
Text(
|
||||
Utils.dateFormat(item['meta']['ptime']),
|
||||
Utils.dateFormat(item.meta!.ptime),
|
||||
maxLines: 1,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
|
||||
Reference in New Issue
Block a user