使用Material 3时如何移除multi_select_flutter中的勾选图标
问题描述
我正在使用multi_select_flutter包搭配Material 3,选中项目后,底部的chip会显示勾选图标。
当设置useMaterial3: false时,勾选图标不会显示。
请问如何在仍使用Material 3的情况下移除该勾选图标?
解决方案
可以通过自定义chip的构建逻辑,完全控制选中状态下的chip UI,从而移除勾选图标,具体有两种场景的实现方式:
1. 弹窗内的选项chip
如果是修改弹窗里选中项的chip样式,直接在MultiSelectChipField中自定义chipBuilder:
MultiSelectChipField( items: _yourOptionItems, // 你的选项列表 initialValue: _selectedItems, // 初始选中项 chipBuilder: (context, state, item) { return Chip( label: Text(item.label), selected: state.selected, // 匹配Material3风格的选中配色 selectedColor: Theme.of(context).colorScheme.primaryContainer, labelStyle: TextStyle( color: state.selected ? Theme.of(context).colorScheme.onPrimaryContainer : null, ), // 不设置selectedIcon参数,即可移除勾选图标 ); }, // 其他必要参数... )
2. 底部的已选chip展示
如果是修改弹窗底部的已选chip展示样式,在MultiSelectChipDisplay中自定义chipBuilder:
MultiSelectBottomSheetField( items: _yourOptionItems, initialValue: _selectedItems, chipDisplay: MultiSelectChipDisplay( chipBuilder: (context, item, onTap) { return Chip( label: Text(item.label), onDeleted: onTap, // 同样不设置selectedIcon ); }, ), // 其他参数... )
核心逻辑就是通过自定义chip构建方法,不提供selectedIcon参数,这样既能保留Material3的整体样式,又能移除勾选图标。
内容的提问来源于stack exchange,提问作者Albert George
相关产品推荐
相关产品推荐

