opt: space tab

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-11 12:44:33 +08:00
parent 574bf861f0
commit 90ccb86a6f
15 changed files with 51 additions and 38 deletions

View File

@@ -76,7 +76,7 @@ class SearchHttp {
queryParameters: params, queryParameters: params,
); );
if (res.data is! Map) { if (res.data is! Map) {
return Error('没有相关数据'); return const Error('没有相关数据');
} }
if (res.data['code'] == 0) { if (res.data['code'] == 0) {
dynamic data; dynamic data;
@@ -144,7 +144,7 @@ class SearchHttp {
queryParameters: params, queryParameters: params,
); );
if (res.data is! Map) { if (res.data is! Map) {
return Error('没有相关数据'); return const Error('没有相关数据');
} }
if (res.data['code'] == 0) { if (res.data['code'] == 0) {
try { try {

View File

@@ -241,7 +241,7 @@ class UserHttp {
); );
if (res.data['code'] == 0) { if (res.data['code'] == 0) {
if (res.data['data']['count'] == 0) { if (res.data['data']['count'] == 0) {
return Success({'count': 0}); return const Success({'count': 0});
} }
List<HotVideoItemModel> list = <HotVideoItemModel>[]; List<HotVideoItemModel> list = <HotVideoItemModel>[];
if (res.data['data']?['list'] != null) { if (res.data['data']?['list'] != null) {

View File

@@ -1,4 +1,3 @@
import 'package:PiliPlus/models/space/filter.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
part 'item.g.dart'; part 'item.g.dart';
@@ -47,8 +46,6 @@ class SpaceItem {
bool? state; bool? state;
String? bvid; String? bvid;
int? videos; int? videos;
// @JsonKey(name: 'three_point')
// List<ThreePoint>? threePoint;
@JsonKey(name: 'first_cid') @JsonKey(name: 'first_cid')
int? firstCid; int? firstCid;
@JsonKey(name: 'view_content') @JsonKey(name: 'view_content')
@@ -57,7 +54,6 @@ class SpaceItem {
int? iconType; int? iconType;
@JsonKey(name: 'publish_time_text') @JsonKey(name: 'publish_time_text')
String? publishTimeText; String? publishTimeText;
List<SpaceTabFilter>? filter;
SpaceItem({ SpaceItem({
this.title, this.title,
@@ -89,12 +85,10 @@ class SpaceItem {
this.state, this.state,
this.bvid, this.bvid,
this.videos, this.videos,
// this.threePoint,
this.firstCid, this.firstCid,
this.viewContent, this.viewContent,
this.iconType, this.iconType,
this.publishTimeText, this.publishTimeText,
this.filter,
}); });
factory SpaceItem.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json); factory SpaceItem.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json);

View File

@@ -36,16 +36,10 @@ SpaceItem _$ItemFromJson(Map<String, dynamic> json) => SpaceItem(
state: json['state'] as bool?, state: json['state'] as bool?,
bvid: json['bvid'] as String?, bvid: json['bvid'] as String?,
videos: (json['videos'] as num?)?.toInt(), videos: (json['videos'] as num?)?.toInt(),
// threePoint: (json['three_point'] as List<dynamic>?)
// ?.map((e) => ThreePoint.fromJson(e as Map<String, dynamic>))
// .toList(),
firstCid: (json['first_cid'] as num?)?.toInt(), firstCid: (json['first_cid'] as num?)?.toInt(),
viewContent: json['view_content'] as String?, viewContent: json['view_content'] as String?,
iconType: (json['icon_type'] as num?)?.toInt(), iconType: (json['icon_type'] as num?)?.toInt(),
publishTimeText: json['publish_time_text'] as String?, publishTimeText: json['publish_time_text'] as String?,
filter: (json['filter'] as List?)
?.map((e) => SpaceTabFilter.fromJson(e))
.toList(),
); );
Map<String, dynamic> _$ItemToJson(SpaceItem instance) => <String, dynamic>{ Map<String, dynamic> _$ItemToJson(SpaceItem instance) => <String, dynamic>{
@@ -78,7 +72,6 @@ Map<String, dynamic> _$ItemToJson(SpaceItem instance) => <String, dynamic>{
'state': instance.state, 'state': instance.state,
'bvid': instance.bvid, 'bvid': instance.bvid,
'videos': instance.videos, 'videos': instance.videos,
// 'three_point': instance.threePoint,
'first_cid': instance.firstCid, 'first_cid': instance.firstCid,
'view_content': instance.viewContent, 'view_content': instance.viewContent,
'icon_type': instance.iconType, 'icon_type': instance.iconType,

View File

@@ -1,16 +1,15 @@
import 'package:PiliPlus/models/space/tab_item.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:PiliPlus/models/space/item.dart';
part 'tab2.g.dart'; part 'tab2.g.dart';
@JsonSerializable() @JsonSerializable()
class Tab2 { class Tab2 {
String? title; final String? title;
String? param; final String? param;
List<SpaceItem>? items; final List<SpaceTabItem>? items;
Tab2({this.title, this.param, this.items}); const Tab2({this.title, this.param, this.items});
factory Tab2.fromJson(Map<String, dynamic> json) => _$Tab2FromJson(json); factory Tab2.fromJson(Map<String, dynamic> json) => _$Tab2FromJson(json);

View File

@@ -10,7 +10,7 @@ Tab2 _$Tab2FromJson(Map<String, dynamic> json) => Tab2(
title: json['title'] as String?, title: json['title'] as String?,
param: json['param'] as String?, param: json['param'] as String?,
items: (json['items'] as List<dynamic>?) items: (json['items'] as List<dynamic>?)
?.map((e) => SpaceItem.fromJson(e as Map<String, dynamic>)) ?.map((e) => SpaceTabItem.fromJson(e as Map<String, dynamic>))
.toList(), .toList(),
); );

View File

@@ -0,0 +1,27 @@
import 'package:PiliPlus/models/space/filter.dart';
class SpaceTabItem {
final String? title;
final String? param;
final int? seriesId;
final int? seasonId;
final List<SpaceTabFilter>? filter;
const SpaceTabItem({
this.title,
this.param,
this.seriesId,
this.seasonId,
this.filter,
});
factory SpaceTabItem.fromJson(Map<String, dynamic> json) => SpaceTabItem(
title: json['title'] as String?,
param: json['param'] as String?,
seriesId: (json['series_id'] as num?)?.toInt(),
seasonId: (json['season_id'] as num?)?.toInt(),
filter: (json['filter'] as List?)
?.map((e) => SpaceTabFilter.fromJson(e))
.toList(),
);
}

View File

@@ -63,7 +63,7 @@ abstract class CommonWhisperController<R>
Future<void> onDeleteList() async { Future<void> onDeleteList() async {
var res = await ImGrpc.deleteSessionList(pageType: sessionPageType); var res = await ImGrpc.deleteSessionList(pageType: sessionPageType);
if (res.isSuccess) { if (res.isSuccess) {
loadingState.value = Success(null); loadingState.value = const Success(null);
} else { } else {
res.toast(); res.toast();
} }

View File

@@ -17,7 +17,7 @@ class FavController
@override @override
Future<void> queryData([bool isRefresh = true]) { Future<void> queryData([bool isRefresh = true]) {
if (mid == 0) { if (mid == 0) {
loadingState.value = Error('账号未登录'); loadingState.value = const Error('账号未登录');
return Future.value(); return Future.value();
} }
return super.queryData(isRefresh); return super.queryData(isRefresh);

View File

@@ -90,7 +90,7 @@ class _HistoryPageState extends State<HistoryPage>
_historyController.baseCtr _historyController.baseCtr
.onClearHistory(context, () { .onClearHistory(context, () {
_historyController.loadingState.value = _historyController.loadingState.value =
Success(null); const Success(null);
if (_historyController.tabController != if (_historyController.tabController !=
null) { null) {
for (final item for (final item
@@ -99,7 +99,7 @@ class _HistoryPageState extends State<HistoryPage>
Get.find<HistoryController>( Get.find<HistoryController>(
tag: item.type) tag: item.type)
.loadingState .loadingState
.value = Success(null); .value = const Success(null);
} catch (_) {} } catch (_) {}
} }
} }

View File

@@ -5,8 +5,8 @@ import 'package:PiliPlus/http/member.dart';
import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/common/member/tab_type.dart'; import 'package:PiliPlus/models/common/member/tab_type.dart';
import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space/data.dart';
import 'package:PiliPlus/models/space/item.dart';
import 'package:PiliPlus/models/space/tab2.dart'; import 'package:PiliPlus/models/space/tab2.dart';
import 'package:PiliPlus/models/space/tab_item.dart';
import 'package:PiliPlus/pages/common/common_data_controller.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart';
import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart';
import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage.dart';
@@ -123,12 +123,12 @@ class MemberController extends CommonDataController<SpaceData, SpaceData?>
@override @override
bool handleError(String? errMsg) { bool handleError(String? errMsg) {
tab2 = [ tab2 = const [
Tab2(title: '动态', param: 'dynamic'), Tab2(title: '动态', param: 'dynamic'),
Tab2( Tab2(
title: '投稿', title: '投稿',
param: 'contribute', param: 'contribute',
items: [SpaceItem(title: '视频', param: 'video')], items: [SpaceTabItem(title: '视频', param: 'video')],
), ),
Tab2(title: '收藏', param: 'favorite'), Tab2(title: '收藏', param: 'favorite'),
Tab2(title: '追番', param: 'bangumi'), Tab2(title: '追番', param: 'bangumi'),

View File

@@ -1,8 +1,8 @@
import 'dart:math'; import 'dart:math';
import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/space/item.dart';
import 'package:PiliPlus/models/space/tab2.dart'; import 'package:PiliPlus/models/space/tab2.dart';
import 'package:PiliPlus/models/space/tab_item.dart';
import 'package:PiliPlus/pages/common/common_data_controller.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart';
import 'package:PiliPlus/pages/member/controller.dart'; import 'package:PiliPlus/pages/member/controller.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
@@ -21,7 +21,7 @@ class MemberContributeCtr extends CommonDataController
TabController? tabController; TabController? tabController;
List<Tab>? tabs; List<Tab>? tabs;
late final _ctr = Get.find<MemberController>(tag: heroTag); late final _ctr = Get.find<MemberController>(tag: heroTag);
List<SpaceItem>? items; List<SpaceTabItem>? items;
@override @override
void onInit() { void onInit() {
@@ -34,7 +34,7 @@ class MemberContributeCtr extends CommonDataController
// show if exist // show if exist
if (_ctr.hasSeasonOrSeries == true) { if (_ctr.hasSeasonOrSeries == true) {
items!.add( items!.add(
SpaceItem( const SpaceTabItem(
param: 'ugcSeason', param: 'ugcSeason',
title: '全部合集/列表', title: '全部合集/列表',
), ),

View File

@@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
import 'package:PiliPlus/common/widgets/video_card/video_card_v_member_home.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_v_member_home.dart';
import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space/data.dart';
import 'package:PiliPlus/models/space/item.dart'; import 'package:PiliPlus/models/space/tab_item.dart';
import 'package:PiliPlus/pages/bangumi/widgets/bangumi_card_v_member_home.dart'; import 'package:PiliPlus/pages/bangumi/widgets/bangumi_card_v_member_home.dart';
import 'package:PiliPlus/pages/member/controller.dart'; import 'package:PiliPlus/pages/member/controller.dart';
import 'package:PiliPlus/pages/member_article/widget/item.dart'; import 'package:PiliPlus/pages/member_article/widget/item.dart';
@@ -257,7 +257,7 @@ class _MemberHomeState extends State<MemberHome>
_ctr.tab2!.indexWhere((item) => item.param == param); _ctr.tab2!.indexWhere((item) => item.param == param);
if (index != -1) { if (index != -1) {
if (['video', 'article', 'audio'].contains(param1)) { if (['video', 'article', 'audio'].contains(param1)) {
List<SpaceItem> items = _ctr.tab2! List<SpaceTabItem> items = _ctr.tab2!
.firstWhere((item) => item.param == param) .firstWhere((item) => item.param == param)
.items!; .items!;
int index1 = int index1 =

View File

@@ -21,7 +21,7 @@ class SubController
@override @override
Future<void> queryData([bool isRefresh = true]) { Future<void> queryData([bool isRefresh = true]) {
if (mid == 0) { if (mid == 0) {
loadingState.value = Error('账号未登录'); loadingState.value = const Error('账号未登录');
return Future.value(); return Future.value();
} }
return super.queryData(isRefresh); return super.queryData(isRefresh);

View File

@@ -1092,7 +1092,7 @@ class VideoDetailController extends GetxController
subType: videoType == SearchType.media_bangumi ? subType : null, subType: videoType == SearchType.media_bangumi ? subType : null,
callback: () { callback: () {
if (videoState.value is! Success) { if (videoState.value is! Success) {
videoState.value = Success(null); videoState.value = const Success(null);
} }
setSubtitle(vttSubtitlesIndex.value); setSubtitle(vttSubtitlesIndex.value);
}, },
@@ -1186,7 +1186,7 @@ class VideoDetailController extends GetxController
SmartDialog.showToast('视频资源不存在'); SmartDialog.showToast('视频资源不存在');
autoPlay.value = false; autoPlay.value = false;
isShowCover.value = true; isShowCover.value = true;
videoState.value = Error('视频资源不存在'); videoState.value = const Error('视频资源不存在');
if (plPlayerController.isFullScreen.value) { if (plPlayerController.isFullScreen.value) {
plPlayerController.toggleFullScreen(false); plPlayerController.toggleFullScreen(false);
} }