继上一篇Flutter自定义组件的视频短课(视频地址: www.bilibili.com/video/BV1ap… )后,咱们继续来聊自定义组件。视频中我为你们详解了Cupertino风格的单选框的实现,此次咱们就说说Cupertino风格的复选框。咱们先来看看效果:
bash
CupertinoButton(
child: Container(
decoration: BoxDecoration(
color: isChecked
? CupertinoColors.systemGreen
: CupertinoColors.white,
border: Border.all(
color: CupertinoColors.systemGrey,
style: BorderStyle.solid,
width: 1),
borderRadius: BorderRadius.all(Radius.circular(5))),
child: Icon(CupertinoIcons.check_mark,
size: 100,
color: isChecked
? CupertinoColors.white
: CupertinoColors.systemGrey),
),
onPressed: () {
setState(() {
isChecked = !isChecked;
});
}
)
复制代码
怎么样?很简单吧?不过,这里还有一个坑。
在实际应用中,不可能吧一个复选框设定到100大小,当把它设置为足够小的时候,Button的点击事件会在复选框外还会响应。这是由于CupertinoButton中有一个属性,叫作minSize。经过阅读源码,咱们发现它有一个预设值:kMinInteractiveDimensionCupertino,值为44.0。
换言之,若是咱们的复选框大小比44小(实际上大多数状况皆如此)时,用户点击复选框外部时,也会响应。因此,咱们还须要给定minSize大小,至少是和icon组件的大小一致,或更小。
好了,本篇文章的内容到这里就结束了,但愿可以帮到你。ide