Flutter中如何实现类似C# ComboBox的输入联想下拉筛选组件?
Flutter实现带实时筛选的输入下拉候选功能的可选方案
原生组件方案(无第三方依赖)
Flutter 2.0及以上版本官方自带Autocomplete组件,原生支持输入实时匹配筛选、下拉展示候选列表的能力,无需引入第三方包,不存在版本兼容、过时问题,是轻量需求的首选。
基础使用示例:
// 示例供应商列表 const List<String> vendorList = [ '阿里巴巴', '腾讯科技', '字节跳动', '华为技术', '小米集团' ]; // 组件使用 Autocomplete<String>( optionsBuilder: (TextEditingValue textEditingValue) { if (textEditingValue.text == '') { return const Iterable<String>.empty(); } // 实时筛选匹配的条目,可自定义排序规则 return vendorList.where((String option) { return option.contains(textEditingValue.text); }); }, onSelected: (String selection) { // 选中候选后的回调逻辑 print('选中的供应商:$selection'); }, )
如果需要高度自定义输入框样式、下拉列表布局,可以使用更底层的RawAutocomplete组件,自行组合TextField和下拉列表控件,适配任意UI需求。
第三方组件方案(适配进阶需求)
如果需要异步加载候选列表、多选、自定义筛选规则、内置样式封装等进阶能力,可以选择以下两款维护活跃、完全支持空安全的成熟组件:
flutter_typeahead:功能高度可配置,支持自定义输入框、自定义下拉项样式、异步请求后端接口获取候选列表、加载状态占位等能力,适配复杂业务场景。dropdown_search:封装度更高,支持普通下拉、搜索下拉、多选下拉、筛选项分组等能力,内置多套样式,少量代码即可实现符合Material Design规范的交互效果。
以上组件的示例代码均可直接在官方示例中复制使用,无需额外修改即可适配空安全版本的Flutter项目。
内容的提问来源于stack exchange,提问作者ViKARLL
相关产品推荐
相关产品推荐

