opt: search panel

This commit is contained in:
bggRGjQaUbCoE
2024-09-29 11:07:43 +08:00
parent 5e8e6b674f
commit 878e9d400c
6 changed files with 538 additions and 446 deletions

View File

@@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/common/skeleton/media_bangumi.dart';
import 'package:PiliPalaX/common/skeleton/video_card_h.dart';
import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/models/common/search_type.dart';
import '../../common/constants.dart';
@@ -75,41 +74,7 @@ class _SearchPanelState extends State<SearchPanel>
}
Widget _buildBody(LoadingState loadingState) {
if (loadingState is Success) {
switch (widget.searchType) {
case SearchType.video:
return SearchVideoPanel(
ctr: _searchPanelController,
list: loadingState.response,
);
case SearchType.media_bangumi:
return searchBangumiPanel(
context,
_searchPanelController,
loadingState.response,
);
case SearchType.bili_user:
return searchUserPanel(
context,
_searchPanelController,
loadingState.response,
);
case SearchType.live_room:
return searchLivePanel(
context,
_searchPanelController,
loadingState.response,
);
case SearchType.article:
return searchArticlePanel(
context,
_searchPanelController,
loadingState.response,
);
default:
return const SizedBox();
}
} else if (loadingState is Loading) {
if (loadingState is Loading) {
return CustomScrollView(
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
@@ -141,15 +106,39 @@ class _SearchPanelState extends State<SearchPanel>
],
);
} else {
return CustomScrollView(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: loadingState is Error ? loadingState.errMsg : '没有相关数据',
fn: _searchPanelController.onReload,
),
],
);
switch (widget.searchType) {
case SearchType.video:
return SearchVideoPanel(
ctr: _searchPanelController,
loadingState: loadingState,
);
case SearchType.media_bangumi:
return searchBangumiPanel(
context,
_searchPanelController,
loadingState,
);
case SearchType.bili_user:
return searchUserPanel(
context,
_searchPanelController,
loadingState,
);
case SearchType.live_room:
return searchLivePanel(
context,
_searchPanelController,
loadingState,
);
case SearchType.article:
return searchArticlePanel(
context,
_searchPanelController,
loadingState,
);
default:
return const SizedBox();
}
}
}
}