使用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
相关产品推荐
相关产品推荐

