Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-05-02 10:36:29 +08:00
parent 05668912f6
commit b89b822d5e
3 changed files with 12 additions and 57 deletions

View File

@@ -2,7 +2,6 @@ import 'dart:async';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/widgets.dart' show ScrollController;
import 'package:get/get.dart';
@@ -12,20 +11,6 @@ mixin 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

@@ -13,8 +13,7 @@ import 'package:PiliPlus/utils/accounts.dart';
import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart';
import 'package:PiliPlus/utils/extension/string_ext.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:flutter/material.dart' show ScrollController, TabController;
import 'package:get/get.dart';
class DynamicsController extends GetxController
@@ -209,28 +208,6 @@ class DynamicsController extends GetxController
scrollController.animToTop();
}
@override
void toTopOrRefresh() {
final ctr = controller;
if (ctr?.scrollController.hasClients == true) {
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

@@ -17,7 +17,6 @@ import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/storage_key.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:collection/collection.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -256,30 +255,24 @@ class MainController extends GetxController
if (value != selectedIndex.value) {
selectedIndex.value = value;
controller.jumpToPage(value);
if (currentNav == NavigationBarType.home) {
if (currentNav == .home) {
checkUnread();
} else if (currentNav == NavigationBarType.dynamics) {
} else if (currentNav == .dynamics) {
setDynCount();
}
} else {
int now = DateTime.now().millisecondsSinceEpoch;
if (now - _lastSelectTime < 500) {
EasyThrottle.throttle(
'topOrRefresh',
const Duration(milliseconds: 500),
() {
if (currentNav == NavigationBarType.home) {
homeController.onRefresh();
} else if (currentNav == NavigationBarType.dynamics) {
dynamicController.onRefresh();
}
},
);
if (currentNav == .home) {
homeController.onRefresh();
} else if (currentNav == .dynamics) {
dynamicController.onRefresh();
}
} else {
if (currentNav == NavigationBarType.home) {
homeController.toTopOrRefresh();
} else if (currentNav == NavigationBarType.dynamics) {
dynamicController.toTopOrRefresh();
if (currentNav == .home) {
homeController.animateToTop();
} else if (currentNav == .dynamics) {
dynamicController.animateToTop();
}
}
_lastSelectTime = now;