From 52f9b0f83c6abca2838ad8d70bbd8d7ccc108cfc Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Mon, 30 Dec 2024 13:54:30 +0800 Subject: [PATCH] mod: delete dynamic on dynamic page Signed-off-by: bggRGjQaUbCoE --- lib/pages/dynamics/widgets/author_panel.dart | 3 ++- lib/pages/member_dynamics/controller.dart | 14 ++++++++++++++ lib/pages/member_dynamics/view.dart | 11 +++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index d1166510..c8b20d5b 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -234,7 +234,8 @@ class MorePanel extends StatelessWidget { minLeadingWidth: 0, ), if (item.modules.moduleAuthor.mid == - GStorage.userInfo.get('userInfoCache')?.mid) + GStorage.userInfo.get('userInfoCache')?.mid && + onRemove != null) ListTile( onTap: () async { Get.back(); diff --git a/lib/pages/member_dynamics/controller.dart b/lib/pages/member_dynamics/controller.dart index 3dbe3a71..445ef227 100644 --- a/lib/pages/member_dynamics/controller.dart +++ b/lib/pages/member_dynamics/controller.dart @@ -1,8 +1,10 @@ import 'package:PiliPalaX/http/loading_state.dart'; +import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/models/dynamics/result.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class MemberDynamicsController extends CommonController { MemberDynamicsController(this.mid); @@ -46,4 +48,16 @@ class MemberDynamicsController extends CommonController { offset: offset, mid: mid, ); + + Future onRemove(dynamicId) async { + var res = await MsgHttp.removeDynamic(dynamicId); + if (res['status']) { + List list = (loadingState.value as Success).response; + list.removeWhere((item) => item.idStr == dynamicId); + loadingState.value = LoadingState.success(list); + SmartDialog.showToast('删除成功'); + } else { + SmartDialog.showToast(res['msg']); + } + } } diff --git a/lib/pages/member_dynamics/view.dart b/lib/pages/member_dynamics/view.dart index f3de3055..9867cc3e 100644 --- a/lib/pages/member_dynamics/view.dart +++ b/lib/pages/member_dynamics/view.dart @@ -105,7 +105,12 @@ class _MemberDynamicsPageState extends State : LastChildLayoutType.none; }, children: (loadingState.response as List) - .map((item) => DynamicPanel(item: item)) + .map( + (item) => DynamicPanel( + item: item, + onRemove: _memberDynamicController.onRemove, + ), + ) .toList(), ) : SliverCrossAxisGroup( @@ -120,7 +125,9 @@ class _MemberDynamicsPageState extends State _memberDynamicController.onLoadMore(); } return DynamicPanel( - item: loadingState.response[index]); + item: loadingState.response[index], + onRemove: _memberDynamicController.onRemove, + ); }, childCount: loadingState.response.length, ),