Flutter中如何基于另一个下拉框重置DropdownSearch.multiSelection()
解决DropdownSearch.multiSelection重置失效问题
问题出在列表修改方式和setState的使用上,按以下步骤调整即可:
1. 修正列表重置逻辑
selectedComplaintBooks.clear()仅清空列表内容,但列表的引用未发生变化,DropdownSearch无法感知到数据更新。你需要重新赋值一个空列表来触发组件重新渲染:
// 替换原有的 selectedComplaintBooks.clear(); selectedComplaintBooks = [];
2. 移除多余的setState调用
你在外部setState回调中嵌套了一层setState(() {});,这属于冗余操作,直接删除即可,避免不必要的重复渲染。
3. 确保下拉选项同步更新
调用presenter.getComplaintBookList(customer.id!)获取新的投诉列表后,要保证dropDownComplaintBookModels被正确更新,避免旧选项残留导致的异常显示。
修改后的单选下拉框onChanged代码:
onChanged: (Customer? customer) { setState(() { StateModel state = customer!.state!; stateController.text = state.name ?? "-"; // 重置选中列表,用新空列表替换原引用 selectedComplaintBooks = []; presenter.getComplaintBookList(customer.id!); dropdownValueCustomer = customer; print(customer.companyName); }); },
额外注意
确保selectedComplaintBooks是普通的List<ComplaintBook>类型,只要保证列表引用发生变化,DropdownSearch的selectedItems就会同步更新选中状态。
内容的提问来源于stack exchange,提问作者Dhaval Chaudhari
相关产品推荐
相关产品推荐

