mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-14 21:24:02 +08:00
@@ -2,7 +2,6 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:PiliPlus/http/loading_state.dart';
|
import 'package:PiliPlus/http/loading_state.dart';
|
||||||
import 'package:PiliPlus/utils/extension/scroll_controller_ext.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:flutter/widgets.dart' show ScrollController;
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
@@ -12,20 +11,6 @@ mixin 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
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import 'package:PiliPlus/utils/accounts.dart';
|
|||||||
import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart';
|
import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart';
|
||||||
import 'package:PiliPlus/utils/extension/string_ext.dart';
|
import 'package:PiliPlus/utils/extension/string_ext.dart';
|
||||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||||
import 'package:easy_debounce/easy_throttle.dart';
|
import 'package:flutter/material.dart' show ScrollController, TabController;
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
class DynamicsController extends GetxController
|
class DynamicsController extends GetxController
|
||||||
@@ -209,28 +208,6 @@ class DynamicsController extends GetxController
|
|||||||
scrollController.animToTop();
|
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
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
tabController.dispose();
|
tabController.dispose();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import 'package:PiliPlus/utils/storage.dart';
|
|||||||
import 'package:PiliPlus/utils/storage_key.dart';
|
import 'package:PiliPlus/utils/storage_key.dart';
|
||||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.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';
|
||||||
|
|
||||||
@@ -256,30 +255,24 @@ class MainController extends GetxController
|
|||||||
if (value != selectedIndex.value) {
|
if (value != selectedIndex.value) {
|
||||||
selectedIndex.value = value;
|
selectedIndex.value = value;
|
||||||
controller.jumpToPage(value);
|
controller.jumpToPage(value);
|
||||||
if (currentNav == NavigationBarType.home) {
|
if (currentNav == .home) {
|
||||||
checkUnread();
|
checkUnread();
|
||||||
} else if (currentNav == NavigationBarType.dynamics) {
|
} else if (currentNav == .dynamics) {
|
||||||
setDynCount();
|
setDynCount();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int now = DateTime.now().millisecondsSinceEpoch;
|
int now = DateTime.now().millisecondsSinceEpoch;
|
||||||
if (now - _lastSelectTime < 500) {
|
if (now - _lastSelectTime < 500) {
|
||||||
EasyThrottle.throttle(
|
if (currentNav == .home) {
|
||||||
'topOrRefresh',
|
homeController.onRefresh();
|
||||||
const Duration(milliseconds: 500),
|
} else if (currentNav == .dynamics) {
|
||||||
() {
|
dynamicController.onRefresh();
|
||||||
if (currentNav == NavigationBarType.home) {
|
}
|
||||||
homeController.onRefresh();
|
|
||||||
} else if (currentNav == NavigationBarType.dynamics) {
|
|
||||||
dynamicController.onRefresh();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
if (currentNav == NavigationBarType.home) {
|
if (currentNav == .home) {
|
||||||
homeController.toTopOrRefresh();
|
homeController.animateToTop();
|
||||||
} else if (currentNav == NavigationBarType.dynamics) {
|
} else if (currentNav == .dynamics) {
|
||||||
dynamicController.toTopOrRefresh();
|
dynamicController.animateToTop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_lastSelectTime = now;
|
_lastSelectTime = now;
|
||||||
|
|||||||
Reference in New Issue
Block a user