fix(group): 修复转让群主时成员选择器无法切换选项,仅能点击单个成员的问题

This commit is contained in:
Zeew 2025-08-08 08:48:13 +08:00
parent f40ed4d7fb
commit e427047752
1 changed files with 23 additions and 8 deletions

View File

@ -146,10 +146,18 @@ class _GroupProfileMemberListState extends TIMUIKitState<GroupProfileMemberList>
child: CheckBoxButton( child: CheckBoxButton(
onChanged: (isChecked) { onChanged: (isChecked) {
if (isChecked) { if (isChecked) {
if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { // When single-select, directly replace the previous selection
return; 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 { } else {
selectedMemberList.removeWhere((element) => element.userID == memberInfo.userID); selectedMemberList.removeWhere((element) => element.userID == memberInfo.userID);
} }
@ -211,14 +219,21 @@ class _GroupProfileMemberListState extends TIMUIKitState<GroupProfileMemberList>
widget.onTapMemberItem!(memberInfo, null); widget.onTapMemberItem!(memberInfo, null);
} }
if (widget.canSelectMember) { if (widget.canSelectMember) {
final isChecked = selectedMemberList.contains(memberInfo); final isChecked =
selectedMemberList.any((element) => element.userID == memberInfo.userID);
if (isChecked) { if (isChecked) {
selectedMemberList.remove(memberInfo); selectedMemberList
.removeWhere((element) => element.userID == memberInfo.userID);
} else { } else {
if (widget.maxSelectNum != null && selectedMemberList.length >= widget.maxSelectNum!) { // When single-select, directly replace the previous selection with the new one
return; 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) { if (widget.onSelectedMemberChange != null) {
widget.onSelectedMemberChange!(selectedMemberList); widget.onSelectedMemberChange!(selectedMemberList);