Flutter 自定义组件实战之Cupertino(iOS)风格的复选框
继上一篇Flutter自定义组件的视频短课(视频地址: https://www.bilibili.com/video/BV1ap4y1U7UB/ )后,我们继续来聊自定义组件。视频中我为大家详解了Cupertino风格的单选框的实现,这次我们就说说Cupertino风格的复选框。我们先来看看效果:


如上两图所示,第一张图是未选中的状态,第二张图是勾选后的状态,在点击时有点击效果。为了方便大家看出效果,我特意放大了组件大小。
其实很简单,整个组件就是Container和Icon组成的。Container是圆角矩形边框和背景色,icon是中间的对勾。另外,还有一个CupertinoButton组件将它们包裹进去,实现点击事件的响应以及点击效果,以及一个布尔变量isChecked表示选中状态。
我们直接看代码:
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组件的大小一致,或更小。
好了,本篇文章的内容到这里就结束了,希望能够帮到你。
Flutter 自定义组件实战之Cupertino(iOS)风格的复选框的更多相关文章
- JS实现自定义工具类,隔行换色、复选框全选、隔行高亮等
很多功能都可以放在js的工具类中,在使用的时候直接调用 本次实现的功能包括: /** 0.当点击表的整行的任意位置时,第一列的复选框或者单选框均选中 1.隔行换色 2.复选框的全选效果 3.实现表格 ...
- iOS: 复选框使用---第三方框架SSCheckBoxView-master
在iOS开发中对应用程序进行设置时一般都用UISwitch,偶尔显得单调,这时候你可以选择使用第三方开源类库SSCheckBoxView . SSCheckBoxView是一个可用在iOS上一个复选框 ...
- iOS 复选框风格转换 Switchery 开关效果
Switchery 是个简单的 JavaScript 组件,只要几个简单的步骤就可以帮助用户把默认的 HTML 复选框转换成漂亮 iOS 7 样式风格.用户可以很方便的自定义这种转换,所以可以很好的配 ...
- Flutter 基础组件:单选框和复选框
前言 Material组件库中提供了Material风格的单选开关Switch和复选框Checkbox,虽然它们都是继承自StatefulWidget,但它们本身不会保存当前选中状态,选中状态都是由父 ...
- 安卓开发:UI组件-RadioButton和复选框CheckBox
2.5RadioButton 为用户提供由两个及以上互斥的选项组成的选项集. 2.5.1精简代码 在按钮变多之后,多次重复书写点击事件有些繁琐,我们在这里创建一个事件OnClick,每次点击时调用该事 ...
- 自定义实现 PyQt5 下拉复选框 ComboCheckBox
一.前言 由于最近的项目需要具有复选功能,但过多的复选框会影响界面布局和美观,因而想到把 PyQt5 的下拉列表和复选框结合起来,但在 PyQt5 中并没有这样的组件供我们使用,所以想要自己实现一个下 ...
- 关于SWT常用组件(按钮,复选框,单选框(Button类))
Button是SWT中最常用的组件.Button类的继承关系图: Button类的构造方法是newe Button(Composite parent,int style)它有两个参数: 第一个参数:是 ...
- 关于我们的Jquery操作下拉列表和复选框,自定义下拉
后半部分还有自定义下拉列表和开灯关灯的效果,可以进来来看一下 哦 如果网页有下拉列表和复选框,看一下Jquery怎么来操作他们,主要怎么来选取他们的数据,怎么设置某一项选中 先来看个下拉列表 < ...
- CSS学习笔记三:自定义单选框,复选框,开关
一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...
- CSS效果:这里有你想要的CSS3漂亮的自定义Checkbox各种复选框
在原来有一篇文章写到了<CSS效果篇--纯CSS+HTML实现checkbox的思路与实例>. 今天这篇文章主要写各种自定义的checkbox复选框,实现如图所示的复选框: 大致的html ...
随机推荐
- 支持向量机SVM:从数学原理到实际应用
本篇文章全面深入地探讨了支持向量机(SVM)的各个方面,从基本概念.数学背景到Python和PyTorch的代码实现.文章还涵盖了SVM在文本分类.图像识别.生物信息学.金融预测等多个实际应用场景中的 ...
- CVE-2017-7921 海康威视(Hikvision)摄像头漏洞复现
今天看到了海康威视又出了新漏洞--CVE-2021-36260,突然心血来潮想要复现一下,结果搜到了一个旧的漏洞--CVE-2017-7921,而且发现仍然有不少海康威视摄像头后台没有修补这个漏洞,于 ...
- TPC-DS工具介绍及性能测试
一. Hive-testbench工具介绍 TPC-DS:https://www.cnblogs.com/webDepOfQWS/p/10544528.html 由于原生态工具生产测试数据表存在bug ...
- 悲观锁、乐观锁、mybatis-plus实现乐观锁
悲观锁.乐观锁.mybatis-plus实现乐观锁 转载自:www.javaman.cn 1.悲观锁.乐观锁 乐观锁和悲观锁是两种用于处理并发操作的数据锁定策略.它们在处理多个事务尝试同时访问和修改同 ...
- WinForm遍历控件
1 foreach (Control c in this.Controls) 2 { 3 if (c is TextBox) 4 ((TextBox)c).Text = "1111" ...
- UMP系统概述
突出性能: 1.低成本,高性能 2.开源数据库 UMP在设计时要实现一下原则: 多租户:
- Mock框架moco学习笔记
目录 一.Moco框架基本介绍 1. 什么是Moco 2. Moco原理简介 3. Moco的配置和运行 4. Moco启动以及第一个demo 二.mock 的启动及第一个demo 1. 创建star ...
- 【Python】【OpenCV】【NumPy】图像数据的访问
接上一随笔,这次学习针对图像数据的访问(Numpy.array) 在OpenCV中,使用 imread() 方法可以访问图像,其返回值是一个数组,而根据传入的不同图像,将会返回不同维度的数组. 针对返 ...
- Asp .Net Core 集成 FluentValidation 强类型验证规则库
目录 入门程序 安装 案例:登录 验证器 内置验证器 自定义验证器 编写自定义验证器 可重复使用的属性验证器 本地化 DI 自动验证 官网:https://docs.fluentvalidation. ...
- Ef Core花里胡哨系列(7) 使用Ef Core也能维护表架构?
Ef Core花里胡哨系列(7) 使用Ef Core也能维护表架构? 我们这里指的并不是查询,而是利用Ef的迁移原理,生成可用的其它表架构操作的Sql. 例如你想在Ef Core里建表,并且可能程序里 ...