mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: search ctr
related #306 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -46,7 +46,7 @@ class _SearchPanelState extends State<SearchPanel>
|
|||||||
searchType: widget.searchType,
|
searchType: widget.searchType,
|
||||||
tag: widget.tag,
|
tag: widget.tag,
|
||||||
),
|
),
|
||||||
tag: widget.searchType.name + widget.keyword,
|
tag: widget.searchType.name + widget.tag,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,12 @@ import 'package:PiliPlus/utils/utils.dart';
|
|||||||
|
|
||||||
import '../../../utils/grid.dart';
|
import '../../../utils/grid.dart';
|
||||||
|
|
||||||
Widget searchArticlePanel(context, searchPanelCtr, LoadingState loadingState) {
|
Widget searchArticlePanel(BuildContext context,
|
||||||
|
SearchPanelController searchPanelCtr, LoadingState loadingState) {
|
||||||
TextStyle textStyle = TextStyle(
|
TextStyle textStyle = TextStyle(
|
||||||
fontSize: Theme.of(context).textTheme.labelSmall!.fontSize,
|
fontSize: Theme.of(context).textTheme.labelSmall!.fontSize,
|
||||||
color: Theme.of(context).colorScheme.outline);
|
color: Theme.of(context).colorScheme.outline);
|
||||||
final ctr = Get.put(ArticlePanelController());
|
final ctr = Get.put(ArticlePanelController(), tag: searchPanelCtr.tag);
|
||||||
|
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: searchPanelCtr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
@@ -288,7 +289,9 @@ class ArticlePanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'article${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.order.value = item['order'];
|
ctr.order.value = item['order'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await ctr.onReload();
|
||||||
@@ -321,7 +324,9 @@ class ArticlePanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'article${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.categoryId = item['categoryId'];
|
ctr.categoryId = item['categoryId'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await ctr.onReload();
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ import 'package:PiliPlus/utils/utils.dart';
|
|||||||
|
|
||||||
import '../../../utils/grid.dart';
|
import '../../../utils/grid.dart';
|
||||||
|
|
||||||
Widget searchUserPanel(context, searchPanelCtr, LoadingState loadingState) {
|
Widget searchUserPanel(BuildContext context,
|
||||||
|
SearchPanelController searchPanelCtr, LoadingState loadingState) {
|
||||||
TextStyle style = TextStyle(
|
TextStyle style = TextStyle(
|
||||||
fontSize: Theme.of(context).textTheme.labelSmall!.fontSize,
|
fontSize: Theme.of(context).textTheme.labelSmall!.fontSize,
|
||||||
color: Theme.of(context).colorScheme.outline);
|
color: Theme.of(context).colorScheme.outline);
|
||||||
final ctr = Get.put(UserPanelController());
|
final ctr = Get.put(UserPanelController(), tag: searchPanelCtr.tag);
|
||||||
|
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: searchPanelCtr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
@@ -213,7 +214,9 @@ class UserPanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'bili_user${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.orderSort = item['orderSort'];
|
ctr.orderSort = item['orderSort'];
|
||||||
ctr.order.value = item['order'];
|
ctr.order.value = item['order'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
@@ -247,7 +250,9 @@ class UserPanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'bili_user${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.userType = item['userType'];
|
ctr.userType = item['userType'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await ctr.onReload();
|
||||||
|
|||||||
@@ -14,10 +14,11 @@ import 'package:intl/intl.dart';
|
|||||||
import '../../../common/constants.dart';
|
import '../../../common/constants.dart';
|
||||||
import '../../../utils/grid.dart';
|
import '../../../utils/grid.dart';
|
||||||
|
|
||||||
Widget searchVideoPanel(context, ctr, LoadingState loadingState) {
|
Widget searchVideoPanel(BuildContext context,
|
||||||
final controller = Get.put(VideoPanelController());
|
SearchPanelController searchPanelCtr, LoadingState loadingState) {
|
||||||
|
final controller = Get.put(VideoPanelController(), tag: searchPanelCtr.tag);
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: ctr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPersistentHeader(
|
SliverPersistentHeader(
|
||||||
pinned: false,
|
pinned: false,
|
||||||
@@ -48,10 +49,10 @@ Widget searchVideoPanel(context, ctr, LoadingState loadingState) {
|
|||||||
: Theme.of(context).colorScheme.outline,
|
: Theme.of(context).colorScheme.outline,
|
||||||
onTap: (value) async {
|
onTap: (value) async {
|
||||||
controller.selectedType.value = i['type'];
|
controller.selectedType.value = i['type'];
|
||||||
ctr.order.value =
|
searchPanelCtr.order.value =
|
||||||
i['type'].toString().split('.').last;
|
i['type'].toString().split('.').last;
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await searchPanelCtr.onReload();
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -72,7 +73,7 @@ Widget searchVideoPanel(context, ctr, LoadingState loadingState) {
|
|||||||
padding: WidgetStateProperty.all(EdgeInsets.zero),
|
padding: WidgetStateProperty.all(EdgeInsets.zero),
|
||||||
),
|
),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
controller.onShowFilterDialog(context, ctr),
|
controller.onShowFilterDialog(context, searchPanelCtr),
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.filter_list_outlined,
|
Icons.filter_list_outlined,
|
||||||
size: 18,
|
size: 18,
|
||||||
@@ -101,7 +102,7 @@ Widget searchVideoPanel(context, ctr, LoadingState loadingState) {
|
|||||||
delegate: SliverChildBuilderDelegate(
|
delegate: SliverChildBuilderDelegate(
|
||||||
(BuildContext context, int index) {
|
(BuildContext context, int index) {
|
||||||
if (index == loadingState.response.length - 1) {
|
if (index == loadingState.response.length - 1) {
|
||||||
ctr.onLoadMore();
|
searchPanelCtr.onLoadMore();
|
||||||
}
|
}
|
||||||
return VideoCardH(
|
return VideoCardH(
|
||||||
videoItem: loadingState.response[index],
|
videoItem: loadingState.response[index],
|
||||||
@@ -113,11 +114,11 @@ Widget searchVideoPanel(context, ctr, LoadingState loadingState) {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
: HttpError(
|
: HttpError(
|
||||||
callback: ctr.onReload,
|
callback: searchPanelCtr.onReload,
|
||||||
),
|
),
|
||||||
Error() => HttpError(
|
Error() => HttpError(
|
||||||
errMsg: loadingState.errMsg,
|
errMsg: loadingState.errMsg,
|
||||||
callback: ctr.onReload,
|
callback: searchPanelCtr.onReload,
|
||||||
),
|
),
|
||||||
_ => throw UnimplementedError(),
|
_ => throw UnimplementedError(),
|
||||||
},
|
},
|
||||||
@@ -236,7 +237,8 @@ class VideoPanelController extends GetxController {
|
|||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
// SmartDialog.showToast("「${item['label']}」的筛选结果");
|
// SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr = Get.find<SearchPanelController>(
|
SearchPanelController ctr = Get.find<SearchPanelController>(
|
||||||
tag: 'video${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name + searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.pubBegin = DateTime(
|
ctr.pubBegin = DateTime(
|
||||||
pubBegin.year,
|
pubBegin.year,
|
||||||
pubBegin.month,
|
pubBegin.month,
|
||||||
@@ -303,7 +305,9 @@ class VideoPanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'video${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
DateTime now = DateTime.now();
|
DateTime now = DateTime.now();
|
||||||
if (item['value'] == 0) {
|
if (item['value'] == 0) {
|
||||||
ctr.pubBegin = null;
|
ctr.pubBegin = null;
|
||||||
@@ -381,7 +385,9 @@ class VideoPanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'video${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.duration.value = item['value'];
|
ctr.duration.value = item['value'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await ctr.onReload();
|
||||||
@@ -418,7 +424,9 @@ class VideoPanelController extends GetxController {
|
|||||||
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
SmartDialog.showToast("「${item['label']}」的筛选结果");
|
||||||
SearchPanelController ctr =
|
SearchPanelController ctr =
|
||||||
Get.find<SearchPanelController>(
|
Get.find<SearchPanelController>(
|
||||||
tag: 'video${searchPanelCtr.keyword}');
|
tag: searchPanelCtr.searchType.name +
|
||||||
|
searchPanelCtr.tag,
|
||||||
|
);
|
||||||
ctr.tids = item['tids'];
|
ctr.tids = item['tids'];
|
||||||
SmartDialog.showLoading(msg: 'loading');
|
SmartDialog.showLoading(msg: 'loading');
|
||||||
await ctr.onReload();
|
await ctr.onReload();
|
||||||
|
|||||||
@@ -32,12 +32,16 @@ class _SearchResultPageState extends State<SearchResultPage>
|
|||||||
vsync: this,
|
vsync: this,
|
||||||
initialIndex: Get.arguments is int ? Get.arguments : 0,
|
initialIndex: Get.arguments is int ? Get.arguments : 0,
|
||||||
length: SearchType.values.length,
|
length: SearchType.values.length,
|
||||||
)..addListener(() {
|
);
|
||||||
|
|
||||||
|
if (Get.arguments is int) {
|
||||||
|
_tabController.addListener(() {
|
||||||
if (Get.isRegistered<SSearchController>()) {
|
if (Get.isRegistered<SSearchController>()) {
|
||||||
Get.find<SSearchController>().initIndex = _tabController.index;
|
Get.find<SSearchController>().initIndex = _tabController.index;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
@@ -110,8 +114,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].name +
|
tag: SearchType.values[index].name + _tag)
|
||||||
_searchResultController.keyword)
|
|
||||||
.animateToTop();
|
.animateToTop();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user