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

使用Material 3时如何移除multi_select_flutter中的勾选图标

问题描述

我正在使用multi_select_flutter包搭配Material 3,选中项目后,底部的chip会显示勾选图标。
Material3下带勾选图标的选中chip

当设置useMaterial3: false时,勾选图标不会显示。
关闭Material3后无勾选图标的选中chip

请问如何在仍使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:05:10