class ChipDemo extends StatefulWidget {
@override
_ChipDemoState createState() => _ChipDemoState();
}
class _ChipDemoState extends State<ChipDemo> {
List<String> _tags = ['北京', '上海', '广东', '深圳'];
String _action = '';
List<String> _select = [];
String _choice = '北京';
@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( // Wrap中的内容如果内容超出一行可以换行显示
spacing: 8.0, // 设置标签之间的间隔
runSpacing: 8.0, // 设置行与行之间的间隔
children: <Widget>[
Chip(
label: Text('Life'),
),
Chip(
label: Text('Sunset'),
backgroundColor: Colors.redAccent, // 设置标签背景色
),
Chip(
label: Text('Wanghao'),
avatar: CircleAvatar( // 添加标签的头部
backgroundColor: Colors.white, // 设置标签头部的背景颜色
child: Text('浩'),
),
),
Chip(
label: Text('Wanghao'),
avatar: CircleAvatar(
// 给标签头部添加背景图片
backgroundImage: NetworkImage('http://img0.pconline.com.cn/pconline/1507/18/6716136_02_thumb.jpg'),
),
),
Chip( // 删除样式的标签
label: Text('City'),
onDeleted: () {}, // 删除按钮的点击事件
deleteIcon: Icon(Icons.delete), // 更改删除按钮的图标
deleteIconColor: Colors.redAccent, // 设置删除按钮的颜色
deleteButtonTooltipMessage: 'Remove this tag?', // 设置长按删除按钮的提示文字
),
Divider( // 添加分割线
color: Colors.grey,
height: 32.0, // 设置分割线区域的高度
// indent: 30.0, // 设置分割线的缩进
),
Wrap( // 用列表生成带删除功能的标签
spacing: 10.0,
children: _tags.map((tag) {
return Chip(
label: Text(tag),
onDeleted: () {
setState(() {
_tags.remove(tag);
});
},
);
}).toList(),
),
Divider(color: Colors.grey,),
Container(width: double.infinity, child: Text('ActionChip:$_action'),),
Wrap( // 带点击事件的标签
spacing: 10.0,
children: _tags.map((tag) {
return ActionChip(label: Text(tag), onPressed: () {
setState(() {
_action = tag;
});
});
}).toList(),
),
Divider(color: Colors.grey,),
Container(width: double.infinity, child: Text('FilterChip:${_select.toString()}'),),
Wrap( // 多选状态的标签
spacing: 10.0,
children: _tags.map((tag) {
return FilterChip(
label: Text(tag),
selected: _select.contains(tag), // 设置选中状态
onSelected: (value) {
setState(() {
if (_select.contains(tag)) {
_select.remove(tag);
} else {
_select.add(tag);
}
});
});
}).toList(),
),
Divider(color: Colors.grey,),
Container(width: double.infinity, child: Text('ChoiceChip:$_choice'),),
Wrap( // 单选状态的标签
spacing: 10.0,
children: _tags.map((tag) {
return ChoiceChip(
label: Text(tag),
selected: _choice == tag,
selectedColor: Colors.redAccent,
onSelected: (value) {
setState(() {
_choice = tag;
});
});
}).toList(),
),
],
)
],
),
),
floatingActionButton: FloatingActionButton( // 重置按钮
child: Icon(Icons.restore),
onPressed: () {
setState(() {
_tags = ['北京', '上海', '广东', '深圳'];
_select = [];
_choice = '北京';
});
}),
);
}
}
flutter小碎片Chip
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...