feat: 动态页返回顶部&双击刷新
This commit is contained in:
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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: [
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user