You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:27:27