* Revert "fix: #779"

This reverts commit ddf7d82656.

* refix #779
This commit is contained in:
My-Responsitories
2025-05-05 12:36:06 +08:00
committed by GitHub
parent e8147680e6
commit 0dfc4e15bd
3 changed files with 34 additions and 2 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -11,6 +12,17 @@ abstract mixin class ScrollOrRefreshMixin {
void animateToTop() => scrollController.animToTop();
Future<void> onRefresh();
void toTopOrRefresh() {
if (scrollController.hasClients) {
if (scrollController.position.pixels == 0) {
EasyThrottle.throttle(
'topOrRefresh', const Duration(milliseconds: 500), onRefresh);
} else {
animateToTop();
}
}
}
}
abstract class CommonController<R, T> extends GetxController

View File

@@ -10,6 +10,7 @@ import 'package:PiliPlus/pages/dynamics_tab/controller.dart';
import 'package:PiliPlus/pages/dynamics_tab/view.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -190,6 +191,25 @@ class DynamicsController extends GetxController
scrollController.animToTop();
}
@override
void toTopOrRefresh() {
final ctr = controller;
if (ctr.scrollController.hasClients) {
if (ctr.scrollController.position.pixels == 0) {
if (scrollController.hasClients &&
scrollController.position.pixels != 0) {
scrollController.animToTop();
}
EasyThrottle.throttle(
'topOrRefresh', const Duration(milliseconds: 500), onRefresh);
} else {
animateToTop();
}
} else {
super.toTopOrRefresh();
}
}
@override
void onClose() {
tabController.dispose();

View File

@@ -156,9 +156,9 @@ class _MainAppState extends State<MainApp>
});
} else {
if (currentPage is HomePage) {
_homeController.animateToTop();
_homeController.toTopOrRefresh();
} else if (currentPage is DynamicsPage) {
_dynamicController.animateToTop();
_dynamicController.toTopOrRefresh();
}
}
_lastSelectTime = now;