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/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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user