Flutter 自动换行的标签 Chip

实现代码:

import 'package:flutter/material.dart';

class ChipDemo extends StatefulWidget {
  @override
  _ChipDemoState createState() => _ChipDemoState();
}

class _ChipDemoState extends State<ChipDemo> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ChipDemo'),
        elevation: 0.0,
      ),
       body: Container(
        padding: EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Wrap(//自动换行
               spacing: 8.0, //一行中两个chip的间距,当不设置时,自动调整间隔
              runSpacing: 8.0, //两行之间的间距
              children: <Widget>[
                Chip(
                  label: Text('Life')
                  ),

                  Chip(
                  label: Text('Sunset'),
                  backgroundColor: Colors.orange,
                  ),

                  Chip(
                  label: Text('Wanghao'),
                  avatar: CircleAvatar(
                    backgroundColor:Colors.grey,
                    child:Text('皓'),
                    ),
                  ),
                  
                  Chip(
                  label: Text('Wanghao'),
                  avatar: CircleAvatar(
                    backgroundImage:NetworkImage('https://resources.ninghao.org/images/wanghao.jpg'),
                    
                    ),
                  ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

效果如下:

chip1.png

Divider分割线

 Divider(
                    color: Colors.grey,
                    height: 32.0,
                    // indent: 32.0,//左缩进
                  ),
                  

带删除的chip

List<String> _tags = ['Apple', 'Banana', 'Lemon'];
Wrap(
                  spacing: 8.0,
                  children: _tags.map(
                    (tag) {
                      return Chip(
                        label: Text(tag),
                        onDeleted: () {
                          setState(() {
                            _tags.remove(tag);
                          });
                        },
                      );
                    },
                  ).toList(),
                ),
                

带动作的ActionChip

 List<String> _tags = ['Apple', 'Banana', 'Lemon'];
  String _action = 'Nothing';
Container(
              width: double.infinity,
              child: Text('ActionChip $_action'),
            ),
            Wrap(
              spacing: 8.0,
              children: _tags.map(
                (tag) {
                  return ActionChip(
                    label: Text(tag),
                    onPressed: () {
                      setState(() {
                        _action = tag;
                      });
                    },
                  );
                },
              ).toList(),
            ),

过滤碎片FilterChip

List<String> _selected = [];
 Container(
              width: double.infinity,
              child: Text('FilterChip ${_selected.toString()}'),
            ),
            Wrap(
              spacing: 8.0,
              children: _tags.map(
                (tag) {
                  return FilterChip(
                    label: Text(tag),
                    selected: _selected.contains(tag),
                    onSelected: (value) {
                      setState(() {
                        if (_selected.contains(tag)) {
                          _selected.remove(tag);
                        } else {
                          _selected.add(tag);
                        }
                      });
                    },
                  );
                },
              ).toList(),
            ),

单选ChoiceChip

String _choice = 'Lemon';

Container(
              width: double.infinity,
              child: Text('ChoiceChip ${_selected.toString()}'),
            ),
            Wrap(
              spacing: 8.0,
              children: _tags.map(
                (tag) {
                  return ChoiceChip(
                    label: Text(tag),
                    selectedColor: Colors.black,
                    selected: _choice == tag,
                    onSelected: (value) {
                      setState(() {
                        _choice = tag;
                      });
                    },
                  );
                },
              ).toList(),
            ),
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 13,204评论 0 13
  • 190319 更新 : 实现 ChipGroup 中永远有一个选中的效果 文中完整代码下载地址:https://g...
    CnPeng阅读 32,051评论 13 37
  • 写作成为他评价值体系中的重要组成,源于高中的语文老师。那一年读了好多的席慕蓉,上交周记的文字里便多了很多小清新,懵...
    拧巴哥阅读 1,787评论 0 0
  • if(条件表达式){执行语句}如果条件表达式中的条件为true,则执行花括号中的执行语句,为假则跳过执行语句不执行...
    潘肚饿兵哥哥阅读 3,950评论 0 0
  • 体重秤:你要听真话还是实话。 日常生活小寓言系列 手指涂抹简单图文,记录下日常生活的联想发现,谓之小寓言。 愿我们...
    木偶班主阅读 1,675评论 1 2

友情链接更多精彩内容