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);