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