Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-06 12:25:09 +08:00
parent 42e082bbc6
commit 40269da391
3 changed files with 17 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:PiliPlus/models/common/rank_type.dart'; import 'package:PiliPlus/models/common/rank_type.dart';
import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/common/common_controller.dart';
import 'package:PiliPlus/pages/main/controller.dart';
import 'package:PiliPlus/pages/rank/zone/controller.dart'; import 'package:PiliPlus/pages/rank/zone/controller.dart';
import 'package:flutter/foundation.dart' show clampDouble; import 'package:flutter/foundation.dart' show clampDouble;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -20,12 +21,17 @@ class RankController extends GetxController
@override @override
ScrollController get scrollController => controller.scrollController; ScrollController get scrollController => controller.scrollController;
final _mainCtr = Get.find<MainController>();
final tabScrollController = ScrollController(); final tabScrollController = ScrollController();
void scrollToCurrentIndex(double tabHeight, int index) { void scrollToCurrentIndex(double tabHeight, int index) {
final position = tabScrollController.position; final position = tabScrollController.position;
final offset = clampDouble( final offset = clampDouble(
(tabHeight * (2 * index + 1) - position.viewportDimension) / 2.0 + 80.0, (tabHeight * (2 * index + 1) - position.viewportDimension) / 2.0 +
(_mainCtr.useBottomNav && (_mainCtr.showBottomBar?.value ?? false)
? 80.0
: 0.0),
position.minScrollExtent, position.minScrollExtent,
position.maxScrollExtent, position.maxScrollExtent,
); );

View File

@@ -58,6 +58,10 @@ class SearchPanelController<R extends SearchNumData<T>, T>
StreamSubscription? _listener; StreamSubscription? _listener;
void cancelListener() {
_listener?.cancel();
}
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
@@ -113,10 +117,4 @@ class SearchPanelController<R extends SearchNumData<T>, T>
scrollController.jumpToTop(); scrollController.jumpToTop();
return super.onReload(); return super.onReload();
} }
@override
void onClose() {
_listener?.cancel();
super.onClose();
}
} }

View File

@@ -32,6 +32,12 @@ abstract class CommonSearchPanelState<
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@override
void dispose() {
controller.cancelListener();
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);