mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: search reload
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ abstract class CommonSearchPanelState<
|
||||
child: SafeArea(
|
||||
bottom: false,
|
||||
child: CustomScrollView(
|
||||
controller: controller.scrollController,
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
slivers: [
|
||||
if (widget.hasHeader)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user