feat: 动态页返回顶部&双击刷新
This commit is contained in:
@ -40,6 +40,7 @@ class DynamicsController extends GetxController {
|
||||
'enabled': true
|
||||
},
|
||||
];
|
||||
bool flag = false;
|
||||
|
||||
Future queryFollowDynamic({type = 'init'}) async {
|
||||
// if (type == 'init') {
|
||||
@ -129,4 +130,21 @@ class DynamicsController extends GetxController {
|
||||
|
||||
queryFollowDynamic();
|
||||
}
|
||||
|
||||
onRefresh() async {
|
||||
page = 1;
|
||||
queryFollowUp();
|
||||
await queryFollowDynamic();
|
||||
}
|
||||
|
||||
// 返回顶部并刷新
|
||||
void animateToTop() async {
|
||||
if (scrollController.offset >=
|
||||
MediaQuery.of(Get.context!).size.height * 5) {
|
||||
scrollController.jumpTo(0);
|
||||
} else {
|
||||
await scrollController.animateTo(0,
|
||||
duration: const Duration(milliseconds: 500), curve: Curves.easeInOut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,11 +117,7 @@ class _DynamicsPageState extends State<DynamicsPage>
|
||||
),
|
||||
),
|
||||
body: RefreshIndicator(
|
||||
onRefresh: () async {
|
||||
_dynamicsController.page = 1;
|
||||
_dynamicsController.queryFollowUp();
|
||||
await _dynamicsController.queryFollowDynamic();
|
||||
},
|
||||
onRefresh: () => _dynamicsController.onRefresh(),
|
||||
child: CustomScrollView(
|
||||
controller: _dynamicsController.scrollController,
|
||||
slivers: [
|
||||
|
@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pilipala/pages/dynamics/index.dart';
|
||||
import 'package:pilipala/pages/home/index.dart';
|
||||
import 'package:pilipala/pages/hot/index.dart';
|
||||
import './controller.dart';
|
||||
@ -15,6 +16,8 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
|
||||
final MainController _mainController = Get.put(MainController());
|
||||
final HomeController _homeController = Get.put(HomeController());
|
||||
final HotController _hotController = Get.put(HotController());
|
||||
final DynamicsController _dynamicController = Get.put(DynamicsController());
|
||||
|
||||
PageController? _pageController;
|
||||
|
||||
late AnimationController? _animationController;
|
||||
@ -82,6 +85,22 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
|
||||
} else {
|
||||
_hotController.flag = false;
|
||||
}
|
||||
|
||||
if (currentPage is DynamicsPage) {
|
||||
if (_dynamicController.flag) {
|
||||
// 单击返回顶部 双击并刷新
|
||||
if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) {
|
||||
_dynamicController.onRefresh();
|
||||
} else {
|
||||
await Future.delayed(const Duration(microseconds: 300));
|
||||
_dynamicController.animateToTop();
|
||||
}
|
||||
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
||||
}
|
||||
_dynamicController.flag = true;
|
||||
} else {
|
||||
_dynamicController.flag = false;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
Reference in New Issue
Block a user