From e427047752095ce2a71a1195bce0ec6a6cbd202d Mon Sep 17 00:00:00 2001 From: Zeew Date: Fri, 8 Aug 2025 08:48:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(group):=20=E4=BF=AE=E5=A4=8D=E8=BD=AC?= =?UTF-8?q?=E8=AE=A9=E7=BE=A4=E4=B8=BB=E6=97=B6=E6=88=90=E5=91=98=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E6=97=A0=E6=B3=95=E5=88=87=E6=8D=A2=E9=80=89?= =?UTF-8?q?=E9=A1=B9=EF=BC=8C=E4=BB=85=E8=83=BD=E7=82=B9=E5=87=BB=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E6=88=90=E5=91=98=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/widgets/group_member_list.dart | 31 ++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/ui/widgets/group_member_list.dart b/lib/ui/widgets/group_member_list.dart index 48a9582..8894216 100644 --- a/lib/ui/widgets/group_member_list.dart +++ b/lib/ui/widgets/group_member_list.dart @@ -146,10 +146,18 @@ class _GroupProfileMemberListState extends TIMUIKitState child: CheckBoxButton( onChanged: (isChecked) { if (isChecked) { - if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { - return; + // When single-select, directly replace the previous selection + if (widget.maxSelectNum != null && widget.maxSelectNum == 1) { + selectedMemberList + .removeWhere((element) => element.userID != memberInfo.userID); + // Ensure only the new member remains + selectedMemberList = [memberInfo]; + } else { + if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { + return; + } + selectedMemberList.add(memberInfo); } - selectedMemberList.add(memberInfo); } else { selectedMemberList.removeWhere((element) => element.userID == memberInfo.userID); } @@ -211,14 +219,21 @@ class _GroupProfileMemberListState extends TIMUIKitState widget.onTapMemberItem!(memberInfo, null); } if (widget.canSelectMember) { - final isChecked = selectedMemberList.contains(memberInfo); + final isChecked = + selectedMemberList.any((element) => element.userID == memberInfo.userID); if (isChecked) { - selectedMemberList.remove(memberInfo); + selectedMemberList + .removeWhere((element) => element.userID == memberInfo.userID); } else { - if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { - return; + // When single-select, directly replace the previous selection with the new one + if (widget.maxSelectNum != null && widget.maxSelectNum == 1) { + selectedMemberList = [memberInfo]; + } else { + if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { + return; + } + selectedMemberList.add(memberInfo); } - selectedMemberList.add(memberInfo); } if (widget.onSelectedMemberChange != null) { widget.onSelectedMemberChange!(selectedMemberList);