diff --git a/android/app/src/main/res/drawable-v21/splash.png b/android/app/src/main/res/drawable-v21/splash.png index 0a6dadd..edae53a 100644 Binary files a/android/app/src/main/res/drawable-v21/splash.png and b/android/app/src/main/res/drawable-v21/splash.png differ diff --git a/android/app/src/main/res/drawable/splash.png b/android/app/src/main/res/drawable/splash.png index 0a6dadd..edae53a 100644 Binary files a/android/app/src/main/res/drawable/splash.png and b/android/app/src/main/res/drawable/splash.png differ diff --git a/lib/controller/mine/my_friend_controller.dart b/lib/controller/mine/my_friend_controller.dart index 8a219d8..3de52ca 100644 --- a/lib/controller/mine/my_friend_controller.dart +++ b/lib/controller/mine/my_friend_controller.dart @@ -16,6 +16,11 @@ class MyFriendController extends GetxController with GetSingleTickerProviderStat final page = 1.obs; final size = 10.obs; + final applyPage = 1.obs; + final applySize = 10.obs; + + final tab = 0.obs; + late UserApi _userApi; late final EasyRefreshController listRefreshController; @@ -69,8 +74,8 @@ class MyFriendController extends GetxController with GetSingleTickerProviderStat getFriendApplyList() async { try{ final response = await _userApi.userPageFriendApply( - pageNum: page.value, - pageSize: size.value, + pageNum: applyPage.value, + pageSize: applySize.value, ); if (response.data.isSuccess && response.data.data != null) { final data = response.data.data?.records ?? []; @@ -94,4 +99,26 @@ class MyFriendController extends GetxController with GetSingleTickerProviderStat } } + applyFriend(String id, int status, fa.Records item) async { + try { + final response = await _userApi.userConfirmFriendApply({ + "id": id, + "status": status + }); + if (response.data.isSuccess) { + SmartDialog.showToast(response.data.message); + item.status = status; + } else { + + // 响应失败,抛出异常 + throw Exception(response.data.message ?? '获取数据失败'); + } + } catch(e){ + print('好友处理失败: $e'); + SmartDialog.showToast('好友处理失败'); + rethrow; + + } + } + } \ No newline at end of file diff --git a/lib/network/api_urls.dart b/lib/network/api_urls.dart index a981282..9e55a17 100644 --- a/lib/network/api_urls.dart +++ b/lib/network/api_urls.dart @@ -94,6 +94,8 @@ class ApiUrls { 'dating-agency-service/user/get/dongwo/own-user-count'; static const String userPageFriendApply = 'dating-agency-chat-audio/user/page/friend-apply'; + static const String userConfirmFriendApply = + 'dating-agency-chat-audio/user/confirm/friend-apply'; //首页相关接口 static const String getMarriageList = diff --git a/lib/network/user_api.dart b/lib/network/user_api.dart index 19e67e7..91410d2 100644 --- a/lib/network/user_api.dart +++ b/lib/network/user_api.dart @@ -244,4 +244,9 @@ abstract class UserApi { @Query('pageNum') required int pageNum, @Query('pageSize') required int pageSize, }); + + @POST(ApiUrls.userConfirmFriendApply) + Future>> userConfirmFriendApply( + @Body() Map data, + ); } diff --git a/lib/network/user_api.g.dart b/lib/network/user_api.g.dart index a8dbb3a..b5f7c71 100644 --- a/lib/network/user_api.g.dart +++ b/lib/network/user_api.g.dart @@ -1489,6 +1489,40 @@ class _UserApi implements UserApi { return httpResponse; } + @override + Future>> userConfirmFriendApply( + Map data, + ) async { + final _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {}; + _data.addAll(data); + final _options = _setStreamType>>( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose( + _dio.options, + 'dating-agency-chat-audio/user/confirm/friend-apply', + queryParameters: queryParameters, + data: _data, + ) + .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)), + ); + final _result = await _dio.fetch>(_options); + late BaseResponse _value; + try { + _value = BaseResponse.fromJson( + _result.data!, + (json) => json as dynamic, + ); + } on Object catch (e, s) { + errorLogger?.logError(e, s, _options); + rethrow; + } + final httpResponse = HttpResponse(_value, _result); + return httpResponse; + } + RequestOptions _setStreamType(RequestOptions requestOptions) { if (T != dynamic && !(requestOptions.responseType == ResponseType.bytes || diff --git a/lib/pages/mine/my_friend_page.dart b/lib/pages/mine/my_friend_page.dart index 1bec71e..cedd4eb 100644 --- a/lib/pages/mine/my_friend_page.dart +++ b/lib/pages/mine/my_friend_page.dart @@ -1,6 +1,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:dating_touchme_app/components/page_appbar.dart'; import 'package:dating_touchme_app/controller/mine/my_friend_controller.dart'; +import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/model/mine/friend_data.dart'; import 'package:easy_refresh/easy_refresh.dart'; @@ -45,21 +46,37 @@ class MyFriendPage extends StatelessWidget { // 下拉刷新 onRefresh: () async { print('推荐列表下拉刷新被触发'); - controller.page.value = 1; - controller.friendList.clear(); - await controller.getFriendList(); - controller.listRefreshController.finishRefresh(IndicatorResult.success); - controller.listRefreshController.finishLoad(IndicatorResult.none); + if(controller.tab.value == 0){ + controller.page.value = 1; + controller.friendList.clear(); + await controller.getFriendList(); + controller.listRefreshController.finishRefresh(IndicatorResult.success); + controller.listRefreshController.finishLoad(IndicatorResult.none); + } else { + controller.applyPage.value = 1; + controller.friendApplyList.clear(); + await controller.getFriendApplyList(); + controller.listRefreshController.finishRefresh(IndicatorResult.success); + controller.listRefreshController.finishLoad(IndicatorResult.none); + } }, // 上拉加载更多 onLoad: () async { print('推荐列表上拉加载被触发, hasMore: '); - controller.page.value += 1; - controller.getFriendList(); + if(controller.tab.value == 0){ + controller.page.value += 1; + controller.getFriendList(); + } else { + controller.applyPage.value += 1; + controller.getFriendApplyList(); + } }, child: SingleChildScrollView( child: Container( padding: EdgeInsets.symmetric(horizontal: 12.w), + constraints: BoxConstraints( + minHeight: MediaQuery.of(context).size.height - MediaQuery.of(context).padding.top, + ), child: Column( children: [ TDTabBar( @@ -88,11 +105,25 @@ class MyFriendPage extends StatelessWidget { controller: controller.tabController, showIndicator: false, isScrollable: true, - onTap: (index) { + onTap: (index) async { print('相亲页面 Tab: $index'); + controller.tab.value = index; + if(index == 0){ + controller.friendList.clear(); + controller.page.value = 1; + await controller.getFriendList(); + controller.listRefreshController.finishRefresh(IndicatorResult.success); + controller.listRefreshController.finishLoad(IndicatorResult.none); + } else { + controller.friendApplyList.clear(); + controller.applyPage.value = 1; + await controller.getFriendApplyList(); + controller.listRefreshController.finishRefresh(IndicatorResult.success); + controller.listRefreshController.finishLoad(IndicatorResult.none); + } }, ), - if(controller.friendList.isEmpty) ...[ + if((controller.tab.value == 0 && controller.friendList.isEmpty) || (controller.tab.value == 1 && controller.friendApplyList.isEmpty)) ...[ Container( padding: EdgeInsets.only(top: 60.w,bottom: 13.w), child: Center( @@ -140,14 +171,16 @@ class MyFriendPage extends StatelessWidget { ), ), ], - if(controller.friendList.isNotEmpty) ...[ + if(controller.tab.value == 0 && controller.friendList.isNotEmpty) ...[ ...controller.friendList.map((e){ return UserItem(item: e,); }), ], - AddUserItem(item: fa.Records(),), - AddUserItem(item: fa.Records(),), - AddUserItem(item: fa.Records(),), + if(controller.tab.value == 1 && controller.friendApplyList.isNotEmpty) ...[ + ...controller.friendApplyList.map((e){ + return AddUserItem(item: e, controller: controller,); + }), + ] ], ), ), @@ -256,7 +289,8 @@ class _UserItemState extends State { class AddUserItem extends StatefulWidget { final fa.Records item; - const AddUserItem({super.key, required this.item}); + final MyFriendController controller; + const AddUserItem({super.key, required this.item, required this.controller}); @override State createState() => _AddUserItemState(); @@ -378,7 +412,35 @@ class _AddUserItemState extends State { ), ), ), - ) + ).onTap((){ + showDialog( + context: context, + builder: (BuildContext context) { + // 返回一个 AlertDialog 组件 + return AlertDialog( + title: Text("提示"), + content: Text("请确认是否同意添加对方为好友"), + actions: [ + // 通常是按钮 + TextButton( + child: Text("同意"), + onPressed: () async { + await widget.controller.applyFriend(widget.item.id ?? "", 2, widget.item); + Navigator.of(context).pop(); + }, + ), + // 通常是按钮 + TextButton( + child: Text("拒绝"), + onPressed: () async { + await widget.controller.applyFriend(widget.item.id ?? "", 3, widget.item); + Navigator.of(context).pop(); + }, + ), + ], + ); + }); + }) ], ), );