feat: 动态页返回顶部&双击刷新

This commit is contained in:
guozhigq
2023-07-10 13:54:03 +08:00
parent 98ef6876ce
commit b1cd8bbed3
3 changed files with 38 additions and 5 deletions

View File

@ -40,6 +40,7 @@ class DynamicsController extends GetxController {
'enabled': true 'enabled': true
}, },
]; ];
bool flag = false;
Future queryFollowDynamic({type = 'init'}) async { Future queryFollowDynamic({type = 'init'}) async {
// if (type == 'init') { // if (type == 'init') {
@ -129,4 +130,21 @@ class DynamicsController extends GetxController {
queryFollowDynamic(); 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);
}
}
} }

View File

@ -117,11 +117,7 @@ class _DynamicsPageState extends State<DynamicsPage>
), ),
), ),
body: RefreshIndicator( body: RefreshIndicator(
onRefresh: () async { onRefresh: () => _dynamicsController.onRefresh(),
_dynamicsController.page = 1;
_dynamicsController.queryFollowUp();
await _dynamicsController.queryFollowDynamic();
},
child: CustomScrollView( child: CustomScrollView(
controller: _dynamicsController.scrollController, controller: _dynamicsController.scrollController,
slivers: [ slivers: [

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pilipala/pages/dynamics/index.dart';
import 'package:pilipala/pages/home/index.dart'; import 'package:pilipala/pages/home/index.dart';
import 'package:pilipala/pages/hot/index.dart'; import 'package:pilipala/pages/hot/index.dart';
import './controller.dart'; import './controller.dart';
@ -15,6 +16,8 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
final MainController _mainController = Get.put(MainController()); final MainController _mainController = Get.put(MainController());
final HomeController _homeController = Get.put(HomeController()); final HomeController _homeController = Get.put(HomeController());
final HotController _hotController = Get.put(HotController()); final HotController _hotController = Get.put(HotController());
final DynamicsController _dynamicController = Get.put(DynamicsController());
PageController? _pageController; PageController? _pageController;
late AnimationController? _animationController; late AnimationController? _animationController;
@ -82,6 +85,22 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
} else { } else {
_hotController.flag = false; _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 @override