feat: search media_ft

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-09 22:07:49 +08:00
parent 57043166a9
commit 794fb9c7e4
6 changed files with 17 additions and 14 deletions

View File

@@ -82,7 +82,7 @@ class SearchHttp {
int? pubEnd,
}) async {
var reqData = {
'search_type': searchType.type,
'search_type': searchType.name,
'keyword': keyword,
// 'order_sort': 0,
// 'user_type': 0,
@@ -117,7 +117,7 @@ class SearchHttp {
case SearchType.bili_user:
data = SearchUserModel.fromJson(res.data['data']);
break;
case SearchType.media_bangumi:
case SearchType.media_bangumi || SearchType.media_ft:
data = SearchMBangumiModel.fromJson(res.data['data']);
break;
case SearchType.article:

View File

@@ -5,7 +5,7 @@ enum SearchType {
// 番剧media_bangumi,
media_bangumi,
// 影视media_ft
// media_ft,
media_ft,
// 直播间及主播live
// live,
// 直播间live_room
@@ -23,9 +23,7 @@ enum SearchType {
}
extension SearchTypeExtension on SearchType {
String get type =>
['video', 'media_bangumi', 'live_room', 'bili_user', 'article'][index];
String get label => ['视频', '番剧', '直播间', '用户', '专栏'][index];
String get label => ['视频', '番剧', '影视', '直播间', '用户', '专栏'][index];
}
// 搜索类型为视频、专栏及相簿时

View File

@@ -98,7 +98,7 @@ class SearchPanelController extends CommonController {
keyword: keyword!,
page: currentPage,
order: order.value,
duration: searchType!.type != 'video' ? null : duration.value,
duration: searchType!.name != 'video' ? null : duration.value,
tids: tids,
orderSort: orderSort,
userType: userType,

View File

@@ -46,7 +46,7 @@ class _SearchPanelState extends State<SearchPanel>
searchType: widget.searchType,
tag: widget.tag,
),
tag: widget.searchType!.type + widget.keyword!,
tag: widget.searchType!.name + widget.keyword!,
);
}
@@ -71,14 +71,17 @@ class _SearchPanelState extends State<SearchPanel>
mainAxisSpacing: 2,
maxCrossAxisExtent: Grid.maxRowWidth * 2,
childAspectRatio: StyleString.aspectRatio *
(widget.searchType == SearchType.media_bangumi ? 1.5 : 2.2),
(widget.searchType == SearchType.media_bangumi ||
widget.searchType == SearchType.media_ft
? 1.5
: 2.2),
),
delegate: SliverChildBuilderDelegate(
(context, index) {
switch (widget.searchType) {
case SearchType.video:
return const VideoCardHSkeleton();
case SearchType.media_bangumi:
case SearchType.media_bangumi || SearchType.media_ft:
return const MediaBangumiSkeleton();
case SearchType.bili_user:
return const VideoCardHSkeleton();
@@ -101,7 +104,7 @@ class _SearchPanelState extends State<SearchPanel>
_searchPanelController,
loadingState,
);
case SearchType.media_bangumi:
case SearchType.media_bangumi || SearchType.media_ft:
return searchBangumiPanel(
context,
_searchPanelController,

View File

@@ -1,9 +1,11 @@
import 'package:PiliPlus/models/common/search_type.dart';
import 'package:get/get.dart';
class SearchResultController extends GetxController {
String? keyword;
RxList<int> count = List.generate(5, (_) => -1).toList().obs;
RxList<int> count =
List.generate(SearchType.values.length, (_) => -1).toList().obs;
@override
void onInit() {

View File

@@ -56,7 +56,7 @@ class _SearchResultPageState extends State<SearchResultPage>
),
),
title: GestureDetector(
onTap: () => Get.back(),
onTap: Get.back,
child: SizedBox(
width: double.infinity,
child: Text(
@@ -110,7 +110,7 @@ class _SearchResultPageState extends State<SearchResultPage>
onTap: (index) {
if (_tabController.indexIsChanging.not) {
Get.find<SearchPanelController>(
tag: SearchType.values[index].type +
tag: SearchType.values[index].name +
_searchResultController.keyword!)
.animateToTop();
}