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

View File

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

View File

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

View File

@@ -46,7 +46,7 @@ class _SearchPanelState extends State<SearchPanel>
searchType: widget.searchType, searchType: widget.searchType,
tag: widget.tag, 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, mainAxisSpacing: 2,
maxCrossAxisExtent: Grid.maxRowWidth * 2, maxCrossAxisExtent: Grid.maxRowWidth * 2,
childAspectRatio: StyleString.aspectRatio * 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( delegate: SliverChildBuilderDelegate(
(context, index) { (context, index) {
switch (widget.searchType) { switch (widget.searchType) {
case SearchType.video: case SearchType.video:
return const VideoCardHSkeleton(); return const VideoCardHSkeleton();
case SearchType.media_bangumi: case SearchType.media_bangumi || SearchType.media_ft:
return const MediaBangumiSkeleton(); return const MediaBangumiSkeleton();
case SearchType.bili_user: case SearchType.bili_user:
return const VideoCardHSkeleton(); return const VideoCardHSkeleton();
@@ -101,7 +104,7 @@ class _SearchPanelState extends State<SearchPanel>
_searchPanelController, _searchPanelController,
loadingState, loadingState,
); );
case SearchType.media_bangumi: case SearchType.media_bangumi || SearchType.media_ft:
return searchBangumiPanel( return searchBangumiPanel(
context, context,
_searchPanelController, _searchPanelController,

View File

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

View File

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