opt: search reload

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-17 16:27:05 +08:00
parent 4db7711a36
commit 8dc9f68584
4 changed files with 27 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/pages/search_result/controller.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:get/get.dart';
import 'package:PiliPlus/http/search.dart';
import 'package:PiliPlus/models/common/search_type.dart';
@@ -33,7 +34,12 @@ class SearchPanelController<R extends SearchNumData<T>, T>
void onInit() {
super.onInit();
try {
searchResultController = Get.find<SearchResultController>(tag: tag);
searchResultController = Get.find<SearchResultController>(tag: tag)
..toTopIndex.listen((index) {
if (index == searchType.index) {
scrollController.animToTop();
}
});
} catch (_) {}
queryData();
}
@@ -64,4 +70,10 @@ class SearchPanelController<R extends SearchNumData<T>, T>
pubBegin: pubBegin,
pubEnd: pubEnd,
);
@override
Future onReload() {
scrollController.jumpToTop();
return super.onReload();
}
}

View File

@@ -46,6 +46,7 @@ abstract class CommonSearchPanelState<
child: SafeArea(
bottom: false,
child: CustomScrollView(
controller: controller.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
if (widget.hasHeader)

View File

@@ -6,4 +6,12 @@ class SearchResultController extends GetxController {
RxList<int> count =
List.generate(SearchType.values.length, (_) => -1).toList().obs;
RxInt toTopIndex = (-1).obs;
@override
void onClose() {
toTopIndex.close();
super.onClose();
}
}

View File

@@ -1,6 +1,5 @@
import 'package:PiliPlus/pages/search/controller.dart';
import 'package:PiliPlus/pages/search_panel/article/view.dart';
import 'package:PiliPlus/pages/search_panel/controller.dart';
import 'package:PiliPlus/pages/search_panel/live/view.dart';
import 'package:PiliPlus/pages/search_panel/pgc/view.dart';
import 'package:PiliPlus/pages/search_panel/user/view.dart';
@@ -133,9 +132,11 @@ class _SearchResultPageState extends State<SearchResultPage>
tabAlignment: TabAlignment.start,
onTap: (index) {
if (_tabController.indexIsChanging.not) {
Get.find<SearchPanelController>(
tag: SearchType.values[index].name + _tag)
.animateToTop();
if (_searchResultController.toTopIndex.value == index) {
_searchResultController.toTopIndex.refresh();
} else {
_searchResultController.toTopIndex.value = index;
}
}
},
),