Browse Source

no message

ios
ZHR007 4 months ago
parent
commit
164b380c84
4 changed files with 103 additions and 133 deletions
  1. 5
      lib/controller/discover/visitor_controller.dart
  2. 149
      lib/pages/home/nearby_tab.dart
  3. 81
      lib/pages/home/recommend_tab.dart
  4. 1
      pubspec.yaml

5
lib/controller/discover/visitor_controller.dart

@ -1,7 +1,6 @@
// controllers/visitor_controller.dart // controllers/visitor_controller.dart
import 'package:easy_refresh/easy_refresh.dart'; import 'package:easy_refresh/easy_refresh.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../model/discover/visitor_model.dart'; import '../../model/discover/visitor_model.dart';
class VisitorController extends GetxController { class VisitorController extends GetxController {
@ -13,7 +12,6 @@ class VisitorController extends GetxController {
controlFinishRefresh: true, controlFinishRefresh: true,
controlFinishLoad: true, controlFinishLoad: true,
); );
// final RefreshController loadMoreController = RefreshController();
// //
var currentPage = 1.obs; var currentPage = 1.obs;
@ -147,8 +145,7 @@ class VisitorController extends GetxController {
@override @override
void onClose() { void onClose() {
// refreshController.dispose();
// loadMoreController.dispose();
refreshController.dispose();
super.onClose(); super.onClose();
} }
} }

149
lib/pages/home/nearby_tab.dart

@ -1,8 +1,7 @@
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.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/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'; import 'package:dating_touchme_app/pages/home/content_card.dart';
/// Tab /// Tab
@ -13,15 +12,14 @@ class NearbyTab extends StatefulWidget {
State<NearbyTab> createState() => _NearbyTabState(); State<NearbyTab> createState() => _NearbyTabState();
} }
class _NearbyTabState extends State<NearbyTab>
with AutomaticKeepAliveClientMixin {
class _NearbyTabState extends State<NearbyTab> with AutomaticKeepAliveClientMixin {
final HomeController controller = Get.find<HomeController>(); final HomeController controller = Get.find<HomeController>();
late final RefreshController _refreshController;
late final EasyRefreshController _refreshController;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_refreshController = RefreshController(initialRefresh: false);
_refreshController = EasyRefreshController(controlFinishRefresh: true, controlFinishLoad: true);
} }
@override @override
@ -38,104 +36,97 @@ class _NearbyTabState extends State<NearbyTab>
final tabBarHeight = 64.0; final tabBarHeight = 64.0;
final totalBottomPadding = bottomPadding + tabBarHeight; final totalBottomPadding = bottomPadding + tabBarHeight;
return SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: Obx(() {
final List<MarriageData> dataSource = controller.nearbyFeed;
return SmartRefresher(
return Obx(() {
return EasyRefresh(
controller: _refreshController, controller: _refreshController,
enablePullDown: true,
enablePullUp: true,
header: const ClassicHeader( header: const ClassicHeader(
refreshingText: '正在刷新...',
completeText: '刷新完成',
idleText: '下拉刷新',
releaseText: '释放刷新',
dragText: '下拉刷新',
armedText: '释放刷新',
readyText: '刷新中...',
processingText: '刷新中...',
processedText: '刷新完成',
failedText: '刷新失败',
noMoreText: '没有更多数据',
showMessage: false
), ),
footer: ClassicFooter( footer: ClassicFooter(
idleText: '上拉加载',
loadingText: '正在加载...',
noDataText: '没有更多数据',
canLoadingText: '释放加载',
dragText: '上拉加载',
armedText: '释放加载',
readyText: '加载中...',
processingText: '加载中...',
processedText: '加载完成',
failedText: '加载失败',
noMoreText: '没有更多数据',
showMessage: false
), ),
// //
onRefresh: () async { onRefresh: () async {
print('同城列表下拉刷新被触发'); print('同城列表下拉刷新被触发');
try { try {
await controller.refreshNearbyData(); await controller.refreshNearbyData();
_refreshController.refreshCompleted();
_refreshController.loadComplete();
_refreshController.finishRefresh();
_refreshController.resetFooter();
print('同城列表刷新完成'); print('同城列表刷新完成');
} catch (e) { } catch (e) {
print('同城列表刷新失败: $e'); print('同城列表刷新失败: $e');
_refreshController.refreshFailed();
_refreshController.finishRefresh(IndicatorResult.fail);
} }
}, },
// //
onLoading: () async {
onLoad: () async {
print('同城列表上拉加载被触发, hasMore: ${controller.nearbyHasMore.value}'); print('同城列表上拉加载被触发, hasMore: ${controller.nearbyHasMore.value}');
if (controller.nearbyHasMore.value) {
try {
await controller.loadNearbyMoreData();
//
if (controller.nearbyHasMore.value) {
_refreshController.loadComplete();
print('同城列表加载更多成功');
} else {
_refreshController.loadNoData();
print('同城列表没有更多数据了');
}
} catch (e) {
print('同城列表加载更多失败: $e');
_refreshController.loadFailed();
try {
await controller.loadNearbyMoreData();
//
if (controller.nearbyHasMore.value) {
_refreshController.finishLoad(IndicatorResult.success);
print('同城列表加载更多成功');
} else {
_refreshController.finishLoad(IndicatorResult.noMore);
print('同城列表没有更多数据了');
} }
} else {
_refreshController.loadNoData();
print('同城列表没有更多数据');
} catch (e) {
print('同城列表加载更多失败: $e');
_refreshController.finishLoad(IndicatorResult.fail);
} }
}, },
child: ListView.separated(
// 使
physics: const AlwaysScrollableScrollPhysics(
parent: BouncingScrollPhysics(),
),
// padding AppBar
padding: EdgeInsets.only(
left: 12,
right: 12,
bottom: 12,
),
itemBuilder: (context, index) {
//
if (dataSource.isEmpty && index == 0) {
// 使
return SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: const Center(
child: Text(
"暂无数据",
style: TextStyle(fontSize: 14, color: Color(0xFF999999)),
child: SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: ListView.separated(
// padding AppBar
padding: EdgeInsets.only(left: 12, right: 12, bottom: 12),
itemBuilder: (context, index) {
//
if (controller.nearbyFeed.isEmpty && index == 0) {
// 使
return SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: const Center(
child: Text(
"暂无数据",
style: TextStyle(fontSize: 14, color: Color(0xFF999999)),
),
), ),
),
);
}
//
final item = dataSource[index];
return ContentCard(item: item);
},
separatorBuilder: (context, index) {
//
if (dataSource.isEmpty) return const SizedBox.shrink();
return const SizedBox(height: 12);
},
// item
itemCount: dataSource.isEmpty ? 1 : dataSource.length,
);
}
//
final item = controller.nearbyFeed[index];
return ContentCard(item: item);
},
separatorBuilder: (context, index) {
//
if (controller.nearbyFeed.isEmpty) return const SizedBox.shrink();
return const SizedBox(height: 12);
},
// item
itemCount: controller.nearbyFeed.isEmpty ? 1 : controller.nearbyFeed.length,
)
), ),
); );
}));
});
} }
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
} }

81
lib/pages/home/recommend_tab.dart

@ -2,7 +2,6 @@ import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:dating_touchme_app/controller/home/home_controller.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'; import 'package:dating_touchme_app/pages/home/content_card.dart';
/// Tab /// Tab
@ -16,17 +15,17 @@ class RecommendTab extends StatefulWidget {
class _RecommendTabState extends State<RecommendTab> class _RecommendTabState extends State<RecommendTab>
with AutomaticKeepAliveClientMixin { with AutomaticKeepAliveClientMixin {
final HomeController controller = Get.find<HomeController>(); final HomeController controller = Get.find<HomeController>();
// late final RefreshController _refreshController;
late final EasyRefreshController _refreshController;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
// _refreshController = RefreshController(initialRefresh: false);
_refreshController = EasyRefreshController(controlFinishRefresh: true, controlFinishLoad: true);
} }
@override @override
void dispose() { void dispose() {
// _refreshController.dispose();
_refreshController.dispose();
super.dispose(); super.dispose();
} }
@ -38,10 +37,8 @@ class _RecommendTabState extends State<RecommendTab>
final tabBarHeight = 64.0; final tabBarHeight = 64.0;
final totalBottomPadding = bottomPadding + tabBarHeight; final totalBottomPadding = bottomPadding + tabBarHeight;
return Obx(() { return Obx(() {
// final List<MarriageData> dataSource = controller.recommendFeed;
return EasyRefresh( return EasyRefresh(
controller: EasyRefreshController(),
controller: _refreshController,
header: const ClassicHeader( header: const ClassicHeader(
dragText: '下拉刷新', dragText: '下拉刷新',
armedText: '释放刷新', armedText: '释放刷新',
@ -67,49 +64,38 @@ class _RecommendTabState extends State<RecommendTab>
print('推荐列表下拉刷新被触发'); print('推荐列表下拉刷新被触发');
try { try {
await controller.refreshRecommendData(); await controller.refreshRecommendData();
print(
'推荐列表刷新完成, hasMore: $controller.recommendHasMore.value');
// _refreshController.loadComplete();
print( '推荐列表刷新完成, hasMore: $controller.recommendHasMore.value');
_refreshController.finishRefresh();
_refreshController.resetFooter();
} catch (e) { } catch (e) {
print('推荐列表刷新失败: $e'); print('推荐列表刷新失败: $e');
// _refreshController.refreshFailed();
_refreshController.finishRefresh(IndicatorResult.fail);
} }
}, },
// //
onLoad: () async { onLoad: () async {
print(
'推荐列表上拉加载被触发, hasMore: $controller.recommendHasMore.value');
if (controller.recommendHasMore.value) {
try {
await controller.loadRecommendMoreData();
//
if (controller.recommendHasMore.value) {
// _refreshController.loadComplete();
print('推荐列表加载更多成功');
} else {
// _refreshController.loadNoData();
print('推荐列表没有更多数据了');
}
} catch (e) {
print('推荐列表加载更多失败: $e');
// _refreshController.loadFailed();
print('推荐列表上拉加载被触发, hasMore: $controller.recommendHasMore.value');
try {
await controller.loadRecommendMoreData();
//
if (controller.recommendHasMore.value) {
_refreshController.finishLoad(IndicatorResult.success);
print('推荐列表加载更多成功');
} else {
_refreshController.finishLoad(IndicatorResult.noMore);
print('推荐列表没有更多数据了');
} }
} else {
// _refreshController.loadNoData();
print('推荐列表没有更多数据');
} catch (e) {
print('推荐列表加载更多失败: $e');
_refreshController.finishLoad(IndicatorResult.fail);
} }
}, },
child: SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: ListView.separated(
child: SizedBox(
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: ListView.separated(
// 使 // 使
// padding AppBar // padding AppBar
padding: EdgeInsets.only(
left: 12,
right: 12,
bottom: 12,
),
padding: EdgeInsets.only(left: 12, right: 12, bottom: 12),
itemBuilder: (context, index) { itemBuilder: (context, index) {
// //
if (controller.recommendFeed.isEmpty && index == 0) { if (controller.recommendFeed.isEmpty && index == 0) {
@ -130,10 +116,7 @@ class _RecommendTabState extends State<RecommendTab>
); );
} else { } else {
return SizedBox( return SizedBox(
height: MediaQuery
.of(context)
.size
.height - totalBottomPadding,
height: MediaQuery.of(context).size.height - totalBottomPadding,
child: const Center( child: const Center(
child: Text( child: Text(
"暂无数据", "暂无数据",
@ -150,12 +133,12 @@ class _RecommendTabState extends State<RecommendTab>
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
// //
if (controller.recommendFeed.isEmpty) return const SizedBox.shrink(); if (controller.recommendFeed.isEmpty) return const SizedBox.shrink();
return const SizedBox(height: 12);
},
// item
itemCount: controller.recommendFeed.isEmpty ? 1 : controller.recommendFeed.length,
)
),
return const SizedBox(height: 12);
},
// item
itemCount: controller.recommendFeed.isEmpty ? 1 : controller.recommendFeed.length,
)
),
); );
}); });
} }

1
pubspec.yaml

@ -69,7 +69,6 @@ dependencies:
# fluwx: ^5.7.5 # fluwx: ^5.7.5
# tobias: ^5.3.1 # tobias: ^5.3.1
agora_rtc_engine: ^6.5.3 agora_rtc_engine: ^6.5.3
pull_to_refresh: ^2.0.0
agora_rtm: ^2.2.5 agora_rtm: ^2.2.5
agora_token_generator: ^1.0.0 agora_token_generator: ^1.0.0
location_plugin: location_plugin:

Loading…
Cancel
Save