|
|
|
@ -1,6 +1,6 @@ |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'package:get/get.dart'; |
|
|
|
import 'package:easy_refresh/easy_refresh.dart'; |
|
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart'; |
|
|
|
import 'package:dating_touchme_app/controller/home/home_controller.dart'; |
|
|
|
import 'package:dating_touchme_app/model/home/marriage_data.dart'; |
|
|
|
import 'package:dating_touchme_app/pages/home/content_card.dart'; |
|
|
|
@ -16,15 +16,12 @@ class RecommendTab extends StatefulWidget { |
|
|
|
class _RecommendTabState extends State<RecommendTab> |
|
|
|
with AutomaticKeepAliveClientMixin { |
|
|
|
final HomeController controller = Get.find<HomeController>(); |
|
|
|
late final EasyRefreshController _refreshController; |
|
|
|
late final RefreshController _refreshController; |
|
|
|
|
|
|
|
@override |
|
|
|
void initState() { |
|
|
|
super.initState(); |
|
|
|
_refreshController = EasyRefreshController( |
|
|
|
controlFinishRefresh: true, |
|
|
|
controlFinishLoad: true, |
|
|
|
); |
|
|
|
_refreshController = RefreshController(initialRefresh: false); |
|
|
|
} |
|
|
|
|
|
|
|
@override |
|
|
|
@ -46,46 +43,57 @@ class _RecommendTabState extends State<RecommendTab> |
|
|
|
final bool isLoading = controller.recommendIsLoading.value; |
|
|
|
final bool hasMore = controller.recommendHasMore.value; |
|
|
|
|
|
|
|
return EasyRefresh( |
|
|
|
return SmartRefresher( |
|
|
|
controller: _refreshController, |
|
|
|
header: MaterialHeader(backgroundColor: Colors.red.withOpacity(0.9)), |
|
|
|
footer: MaterialFooter(backgroundColor: Colors.red.withOpacity(0.9)), |
|
|
|
enablePullDown: true, |
|
|
|
enablePullUp: true, |
|
|
|
header: const ClassicHeader( |
|
|
|
refreshingText: '正在刷新...', |
|
|
|
completeText: '刷新完成', |
|
|
|
idleText: '下拉刷新', |
|
|
|
releaseText: '释放刷新', |
|
|
|
), |
|
|
|
footer: ClassicFooter( |
|
|
|
idleText: '上拉加载', |
|
|
|
loadingText: '正在加载...', |
|
|
|
noDataText: '没有更多数据', |
|
|
|
canLoadingText: '释放加载', |
|
|
|
), |
|
|
|
// 下拉刷新 |
|
|
|
onRefresh: () async { |
|
|
|
print('推荐列表下拉刷新被触发'); |
|
|
|
try { |
|
|
|
await controller.refreshRecommendData(); |
|
|
|
_refreshController.finishRefresh(IndicatorResult.success); |
|
|
|
_refreshController.refreshCompleted(); |
|
|
|
print('推荐列表刷新完成'); |
|
|
|
} catch (e) { |
|
|
|
print('推荐列表刷新失败: $e'); |
|
|
|
_refreshController.finishRefresh(IndicatorResult.fail); |
|
|
|
_refreshController.refreshFailed(); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 上拉加载更多 |
|
|
|
onLoad: () async { |
|
|
|
onLoading: () async { |
|
|
|
print('推荐列表上拉加载被触发, hasMore: $hasMore'); |
|
|
|
if (hasMore && controller.recommendHasMore.value) { |
|
|
|
try { |
|
|
|
await controller.loadRecommendMoreData(); |
|
|
|
// 完成加载,根据是否有更多数据决定 |
|
|
|
if (controller.recommendHasMore.value) { |
|
|
|
_refreshController.finishLoad(IndicatorResult.success); |
|
|
|
_refreshController.loadComplete(); |
|
|
|
print('推荐列表加载更多成功'); |
|
|
|
} else { |
|
|
|
_refreshController.finishLoad(IndicatorResult.noMore); |
|
|
|
_refreshController.loadNoData(); |
|
|
|
print('推荐列表没有更多数据了'); |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
print('推荐列表加载更多失败: $e'); |
|
|
|
_refreshController.finishLoad(IndicatorResult.fail); |
|
|
|
_refreshController.loadFailed(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
_refreshController.finishLoad(IndicatorResult.noMore); |
|
|
|
_refreshController.loadNoData(); |
|
|
|
print('推荐列表没有更多数据'); |
|
|
|
} |
|
|
|
}, |
|
|
|
// EasyRefresh 的 child 必须始终是可滚动的 Widget |
|
|
|
child: ListView.separated( |
|
|
|
// 关键:始终允许滚动,即使内容不足 |
|
|
|
physics: const AlwaysScrollableScrollPhysics( |
|
|
|
|