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

使用animated_custom_dropdown包,如何清除多选下拉框的选中项?

清除CustomDropdown多选框选中内容的方法

这个animated_custom_dropdown包没有提供专门的controller,但可以通过GlobalKey获取下拉框的状态实例,进而调用清除选中内容的方法。具体操作步骤如下:

  • 在你的State类中定义GlobalKey,泛型类型需与下拉框选项类型匹配(示例为String,可根据实际替换):
final _multiDropdownKey = GlobalKey<CustomDropdownState<String>>();
  • 将这个key绑定到CustomDropdown.multiSelect组件上:
CustomDropdown.multiSelect(
  key: _multiDropdownKey, // 绑定GlobalKey
  hintText: 'Sub Category',
  items: subCategories,
  decoration: CustomDropdownDecoration(
      hintStyle: GoogleFonts.poppins(
    color: Colors.black,
  )),
  onListChanged: (value) {
    print(value);
  },
)
  • 添加触发清除的逻辑(比如一个按钮),调用clear()方法即可清空选中内容:
ElevatedButton(
  onPressed: () {
    _multiDropdownKey.currentState?.clear();
  },
  child: const Text('清除选中的子类别'),
)

完整集成示例代码:

// 假设这是你的State类内部代码
final _multiDropdownKey = GlobalKey<CustomDropdownState<String>>();

@override
Widget build(BuildContext context) {
  return Column(
    children: [
      // 单选下拉框
      Container(
        height: 60,
        decoration: BoxDecoration(
            border: Border.all(
              color: const Color.fromRGBO(238, 240, 243, 1),
            ),
            borderRadius: BorderRadius.circular(10)),
        child: CustomDropdown(
          hideSelectedFieldWhenExpanded: true,
          hintText: 'Category',
          decoration: CustomDropdownDecoration(
              hintStyle: GoogleFonts.poppins(
            color: Colors.black,
          )),
          items: categories,
          onChanged: (value) {
            print(value);
          },
        ),
      ),
      const SizedBox(height: 20),
      // 多选下拉框(绑定GlobalKey)
      Container(
        height: 60,
        decoration: BoxDecoration(
            border: Border.all(
              color: const Color.fromRGBO(238, 240, 243, 1),
            ),
            borderRadius: BorderRadius.circular(10)),
        child: Center(
            child: CustomDropdown.multiSelect(
          key: _multiDropdownKey,
          hintText: 'Sub Category',
          items: subCategories,
          decoration: CustomDropdownDecoration(
              hintStyle: GoogleFonts.poppins(
            color: Colors.black,
          )),
          onListChanged: (value) {
            print(value);
          },
        )),
      ),
      const SizedBox(height: 20),
      // 清除按钮
      ElevatedButton(
        onPressed: () {
          _multiDropdownKey.currentState?.clear();
        },
        child: const Text('清除选中的子类别'),
      ),
    ],
  );
}

注:如果下拉框选项是自定义模型类型,只需将GlobalKey的泛型替换为对应类型即可,例如GlobalKey<CustomDropdownState<YourCustomModel>>。

内容的提问来源于stack exchange,提问作者Ram Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:15:58