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

View File

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

View File

@@ -6,4 +6,12 @@ class SearchResultController extends GetxController {
RxList<int> count = RxList<int> count =
List.generate(SearchType.values.length, (_) => -1).toList().obs; 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/controller.dart';
import 'package:PiliPlus/pages/search_panel/article/view.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/live/view.dart';
import 'package:PiliPlus/pages/search_panel/pgc/view.dart'; import 'package:PiliPlus/pages/search_panel/pgc/view.dart';
import 'package:PiliPlus/pages/search_panel/user/view.dart'; import 'package:PiliPlus/pages/search_panel/user/view.dart';
@@ -133,9 +132,11 @@ class _SearchResultPageState extends State<SearchResultPage>
tabAlignment: TabAlignment.start, tabAlignment: TabAlignment.start,
onTap: (index) { onTap: (index) {
if (_tabController.indexIsChanging.not) { if (_tabController.indexIsChanging.not) {
Get.find<SearchPanelController>( if (_searchResultController.toTopIndex.value == index) {
tag: SearchType.values[index].name + _tag) _searchResultController.toTopIndex.refresh();
.animateToTop(); } else {
_searchResultController.toTopIndex.value = index;
}
} }
}, },
), ),