Flutter ChoiceChip 用来实现选择标签效果

Posted 早起的年轻人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter ChoiceChip 用来实现选择标签效果相关的知识,希望对你有一定的参考价值。

程序员如果敲一会就停半天,抱着一杯茶,表情拧巴,那才是在编程,在之前我要实现一级标签效果,我还在苦苦写了好多嵌套的代码,当我看到 Clip 时,泪奔啊,原来一个组件就可以实现,所以从事Flutter开发的小伙伴可以瞅瞅效果,万一用上呢。

重要消息


ChoiceChip 是Material Design的一个 Widget,用来实现选择标签效果,如下图所示

1 ChoiceChip 核心使用代码如下

class _ChoiceClipHomeState extends State<ChoiceClipHome> 
  ///当前选中的索引
  int? _value = 1;

  final List<Map<String, dynamic>> _tagList = [
    "tag": "早起", "index": 0,
    "tag": "早睡", "index": 1,
    "tag": "精神", "index": 2,
  ];
  
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(title: const Text("ChoiceClip")),
      body: Center(
        ///核心代码
        child: buildChoiceClip(),
      ),
    );
  
  

  Widget buildChoiceClip() 
    return Wrap(
      children: _tagList
          .map((e) => Padding(
                padding: EdgeInsets.only(left: 5, right: 5),
                child: buildItem(e),
              ))
          .toList(),
    );
  
 ///构建每一个 ChoiceChip
  ChoiceChip buildItem(Map<String, dynamic> map) 
    String tag = map["tag"];
    int index = map["index"];
    return ChoiceChip(
      label: Text(tag),
      selected: _value == index,
      onSelected: (bool selected) 
        setState(() 
          _value = selected ? index : null;
        );
      ,
      labelStyle: TextStyle(
        color: _value == index ? Colors.white : Colors.black,
      ),
      selectedColor: Colors.red,
      surfaceTintColor: Colors.white,
    );
  

2 ChoiceChip 属性概览

  • autofocus → bool
    如果此小部件将被选择为初始焦点,而其作用域中目前没有其他节点被聚焦,则为True。
    最后

  • avatar → Widget
    文本最左侧显示的Widget,一般是个小图标

  • avatarBorder→ShapeBorder
    当 ChoiceChip的 selected 属性为 true.,在avatar上绘制的半透明高光的形状。

  • backgroundColor
    颜色将用于 ChoiceChip 未选中 并且 isEnabled 的值为 true 时显示的背景色

  • disabledColor→颜色?
    颜色将用于 ChoiceChip 未选中 并且 isEnabled 的值为 false 时显示的背景色

  • elevation → double?
    阴影高度

  • iconTheme→IconThemeData吗?
    用于 ChoiceChip 中所有图标的主题。

  • isEnabled→bool
    该芯片是否可用于输入。

  • labelPadding→EdgeInsetsGeometry吗?
    标签小部件周围的填充。

  • labelStyle→TextStyle吗?
    应用于ChoiceChip标签的文本样式。

  • onselect→ValueChanged < bool > ?
    当ChoiceChip 在选定和取消选定状态之间更改时调用。

  • pressElevation→双吗?
    在按压运动期间,将应用于ChoiceChip 阴影调试。

  • selected →bool
    该ChoiceChip是否被选中。

  • selectedColor→颜色?
    用于ChoiceChip背景的颜色,表示它已被选中。

  • selectedShadowColor→颜色?
    选中时阴影的颜色

  • shadowColor→颜色?
    默认显示的阴影的颜色。
    最后
    shape→OutlinedBorder吗?
    在 ChoiceChip 周围绘制的轮廓边界。
    side →BorderSide吗?
    ChoiceChip 轮廓的颜色和重量。


完毕

以上是关于Flutter ChoiceChip 用来实现选择标签效果的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Chip的使用

Flutter Clip 用来实现文本标签的效果

Flutter中FilterChip用来实现过滤标签效果

Flutter InputChip 用来实现可点击的标签效果

Flutter ActionChip 用来实现点击效果的小标签

Flutter:选择后删除选择文件图像