* 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/http/loading_state.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -11,6 +12,17 @@ abstract mixin class ScrollOrRefreshMixin {
void animateToTop() => scrollController.animToTop(); void animateToTop() => scrollController.animToTop();
Future<void> onRefresh(); 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 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/pages/dynamics_tab/view.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -190,6 +191,25 @@ class DynamicsController extends GetxController
scrollController.animToTop(); 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 @override
void onClose() { void onClose() {
tabController.dispose(); tabController.dispose();

View File

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