feat: search all

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-18 14:07:20 +08:00
parent f42a6200ed
commit 87a812b7e0
16 changed files with 593 additions and 207 deletions

View File

@@ -1,6 +1,6 @@
// ignore_for_file: constant_identifier_names
enum SearchType {
// all,
all,
// 视频video
video,
// 番剧media_bangumi,
@@ -25,7 +25,7 @@ enum SearchType {
extension SearchTypeExtension on SearchType {
String get label => [
// '综合',
'综合',
'视频',
'番剧',
'影视',

View File

@@ -14,6 +14,46 @@ abstract class SearchNumData<T> {
List<T>? list;
}
class SearchAllModel extends SearchNumData {
SearchAllModel({
super.numResults,
super.list,
});
SearchAllModel.fromJson(Map<String, dynamic> json) {
numResults = (json['numResults'] as num?)?.toInt();
if ((json['result'] as List?)?.isNotEmpty == true) {
final isRefresh = json['page'] == 1;
list = [];
for (final item in json['result']) {
if ((item['data'] as List?)?.isNotEmpty == true) {
switch (item['result_type']) {
case 'media_bangumi' || 'media_bangumi':
if (isRefresh) {
list!.add((item['data'] as List)
.map((e) => SearchMBangumiItemModel.fromJson(e))
.toList());
}
break;
case 'bili_user':
if (isRefresh) {
list!.addAll((item['data'] as List)
.map((e) => SearchUserItemModel.fromJson(e))
.toList());
}
break;
case 'video':
list!.addAll((item['data'] as List)
.map((e) => SearchVideoItemModel.fromJson(e))
.toList());
break;
}
}
}
}
}
}
class SearchVideoModel extends SearchNumData<SearchVideoItemModel> {
SearchVideoModel({
super.numResults,