此篇给大家介绍的是水波纹实现的方法,说起水波纹,如果要在android实现是有点困难的,可是在flutter中只需要用到Ink组件即可完美的实现,接下来就是对Ink组建的简单介绍啦~

  • InkWell和InkResponse区别:
  • InkWell
  • InkResponse

InkWell和InkResponse区别:

  • InkWell继承与InkResponse
  • InkWell使用自定义水墨颜色属性(splashColor)会把文本覆盖掉,InkResponse不会!(稍后详细介绍)
  • InkWell比InkResponse显示水墨会更快一点

InkWell

这里只列举常用属性,加粗是必加属性

InkWell参数 类型 说明
highlightColor Color 高亮颜色
splashColor Color 水波纹颜色
radius double 水波纹半径
borderRadius BorderRadius 水波纹形状
onTap GestureTapCallback 单击事件
onDoubleTap GestureTapCallback 双击事件
onLongPress GestureLongPressCallback 长按事件

简单事例:

 InkWell(radius: 300,//可以不加// highlightColor: Colors.teal, //设置高亮颜色splashColor: Colors.black,//水波纹形状borderRadius: new BorderRadius.circular(25),//------√------onTap: () {print('--单击--');},// onDoubleTap: (){//   print('--双击--');// },// onLongPress: (){//   print('--长按--');// },child: Container(width: 200,height: 50,alignment: Alignment.center,child: Text("InkWell"),),),

效果图(1.1):

可能会有朋友有这样的需求,需要将初始的水波纹设置为黄色,然后点击的时候才出现黑色的水波纹,

将Container设置为黄色

  InkWell(radius: 300,//可以不加// highlightColor: Colors.teal, //设置高亮颜色splashColor: Colors.black,//水波纹形状borderRadius: new BorderRadius.circular(25),onTap: () {print('--单击--');},child: Container(color: Colors.yellow,width: 200,height: 50,alignment: Alignment.center,child: Text("InkWell"),),

效果图(1.2):

从效果图(1.2)中可以看出,无论我怎么点击,他也不会出现水波纹效果,难道是我什么地方写错了吗?嘿嘿,当然不是了,这里这个样子是因为Container颜色遮挡掉了水波纹,所以需要用到今天的第二个组件Ink()组件

Ink(decoration:new BoxDecoration(//圆角color: Colors.yellow,borderRadius: new BorderRadius.circular(25),),child: InkWell(//可以不加radius: 300,// highlightColor: Colors.teal, //设置高亮颜色splashColor: Colors.black,//水波纹形状borderRadius: new BorderRadius.circular(25),//------√------onTap: () {print('--单击--');},child: Container(// color: Colors.yellow,这里的颜色不能加!!!width: 200,height: 50,alignment: Alignment.center,child: Text("InkWell"),),),)

效果图(1.4):

可以看出基本已经实现了咋们所所得效果,但是还是有问题可不可以使用水波纹的时候,不将文本覆盖掉,这就用到了InkPesponce()组件,这也是他俩的区别之一.

高亮颜色事例
不建议与水波纹颜色(splashColor)同时存在

 Ink(decoration:new BoxDecoration(color: Colors.yellow,borderRadius: new BorderRadius.circular(25),),child: InkWell(//可以不加radius: 300,highlightColor: Colors.teal, //设置高亮颜色// splashColor: Colors.black,//水波纹形状borderRadius: new BorderRadius.circular(25),//------√------onTap: () {print('--单击--');},child: Container(// color: Colors.yellow,这里的颜色不能加!!!width: 200,height: 50,alignment: Alignment.center,child: Text("InkWell"),),),)

效果图(1.4):

InkResponse

这里只列举常用属性,加粗是必加属性

InkResponse参数 类型 说明
highlightColor Color 高亮颜色
splashColor Color 水波纹颜色
radius double 水波纹半径
borderRadius BorderRadius 水波纹形状
onTap GestureTapCallback 单击事件
onDoubleTap GestureTapCallback 双击事件
onLongPress GestureLongPressCallback 长按事件
containedInkWell bool 是否剪切为合适角度,建议为设置为true
highlightShape BoxShape BoxShape.rectangle矩形(建议使用)
BoxShape.circle圆形
highlightColor Color 高亮颜色

InkResponse与InkWell及其相似,只是有个别参数不同而已,直接看代码吧~

  Padding(padding: EdgeInsets.only(top: 30),child: new Ink(//设置背景decoration: new BoxDecoration(color: Colors.purple,borderRadius:new BorderRadius.all(new Radius.circular(25.0)),),child: new InkResponse(borderRadius:new BorderRadius.all(new Radius.circular(25.0)),//点击控件高亮时显示的控件在控件上层,水波纹下层,如果高亮颜色显示的话,水波纹只有在高亮状态下显示//highlightColor: Colors.yellowAccent,  //高亮颜色//点击或者toch控件高亮的shape形状highlightShape: BoxShape.rectangle,//  ----√----/*  InkResponse内部的radius这个需要注意的是,我们需要半径大于控件的宽,如果radius过小,显示的水波纹就是一个很小的圆,*///水波纹的半径radius: 300.0,//水波纹的颜色splashColor: Colors.black,//true表示要剪裁水波纹响应的界面   false不剪裁  如果控件是圆角不剪裁的话水波纹是矩形containedInkWell: true,//  ----√----//点击事件onTap: () {//  ----√----print("click");},child: new Container(//不能在InkResponse的child容器内部设置装饰器颜色,// 否则会遮盖住水波纹颜色的,containedInkWell设置为false就能看到是否是遮盖了。width: 200.0,height: 50.0,//设置child 居中alignment: Alignment(0, 0),child: Text("InkResponse",style: TextStyle(color: Colors.white, fontSize: 16.0),),),),),)

效果图(2.1):

可以看出:

  • InkResponse不会将文本覆盖掉,然而InkWell会将文本覆盖掉,
  • InkResponse使用起来会有比较多的参数

如果有兴趣的话建议大家使用InkResponse()组件,毕竟是父类,可选的也比较多,当然使用InkWell()也是可以的

完整代码

上一章:Flutter 夜间模式及字体设置(2.2)

下一章:Flutter AnimatedWidget,AnimatedBuilder动画2.4

原创不易,您的点赞就是对我最大的支持,请留下您的点赞吧~

Flutter Ink,InkWell,InkResponse水波纹实现(2.3)相关推荐

  1. Flutter InkWell 和 Ink --按钮“水波纹”效果

    InkWell InkWell组件在用户点击时出现"水波纹"效果,InkWell简单用法: InkWell(onTap: (){},child: Text('这是InkWell点击 ...

  2. Flutter 点击水波纹 效果

    FlatButton 原本已经包含了 点击水波纹 效果 不过目前已经弃用,由TextButton 代替,但 TextButton 的效果感觉没有 FlatButton 的好,另外 MaterialBu ...

  3. Flutter TabBar 标签栏背景颜色、点击水波纹颜色配置

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...

  4. Flutter 水波纹动画效果实现

    Flutter 水波纹动画效果实现 1. 先上效果图: 2. 实现 2.1 尺寸渐变结合透明度渐变 2.2 多个基本动画效果叠加 3. 总结 1. 先上效果图: 2. 实现 我们将该动画拆成三部分来实 ...

  5. Flutter中为图片设置波纹点击效果

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 网易云[玩转大前端]配套课程 EDU配套 教程 Flutter开发的点滴积累系列文章 为图片添加水波纹点击效 ...

  6. android自定义水波纹,Android自定义View——实现水波纹效果类似剩余流量球(示例代码)...

    最近突然手痒就想搞个贝塞尔曲线做个水波纹效果玩玩,终于功夫不负有心人最后实现了想要的效果,一起来看下吧: 效果图镇楼 一:先一步一步来分解一下实现的过程 需要绘制一个正弦曲线(sin)或者余弦曲线(c ...

  7. 震惊!原来Android OpenGL ES可以这样用,实现 (水波纹)涟漪效果超惊艳!

    用几行代码实现惊艳的特效. 作者:字节流动 链接:https://juejin.im/post/5ed9c9445188254344768bd6 水波纹效果原理 最近一个做视频滤镜的朋友,让我给他做一 ...

  8. android自定义WaveView水波纹控件

    WaveView Github Repository and libaray https://github.com/onlynight/WaveView 首先看下演示demo demo中可以看到不同高 ...

  9. Android自定义水波纹动画Layout

    Android自定义水波纹动画Layout 源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心.唉不说了,来看看代码吧. 展示效果 Hi前辈 ...

最新文章

  1. SpringBoot(五)ResponseBodyAdvice
  2. 服务器健康监控管理系统,一种远程健康监控系统服务器
  3. android 工作 绝望,我的人生绝望手游
  4. c# mysql 管理员权限_C# winform 权限管理系统完整源码下载(含数据库)
  5. CodeForces - 1368D AND, OR and square sum(位运算+贪心)
  6. 联想w540笔记本参数_2020年12月笔记本电脑推荐!联想、惠普、华为笔记本电脑推荐!18款高性价比笔记本电脑推荐!!!...
  7. 数学发展重在人才,丘成桐鼓励年轻学子“无法无天”
  8. WordPress独立资源下载页面插件 基于美化Xydown插件
  9. B - Friends
  10. android 功能清单文件夹,全新Android L大小全部功能清单整理
  11. 数据标注——VoTT的学习笔记
  12. python语句示例_Python学习笔记之if语句的使用示例
  13. HTML:常用特殊字符编码表(自用)
  14. 第五章 国内著名网络数据库系统
  15. google 翻译错误解决方法
  16. Netty+WebSocket服务器完成Web聊天室(纯文字)
  17. 负反馈元器件参数对功放性能的影响
  18. 金融数量分析2:Markowitz均值方差模型
  19. Win10 Windows Defender添加信任文件的方法
  20. APP性能测试--帧率测试

热门文章

  1. 关于vscode中输入的中文变繁体的问题
  2. 华为手机滑动速度设置_用华为手机的人,这个设置赶紧关了!速度流畅告别卡顿...
  3. 禁用计算机外部设备,禁用扫描仪的多种方法
  4. 在jQuery中,a标签trigger触发click不起作用的原因和解决方法
  5. 开发环境与运行环境的搭建
  6. 体育测试成绩用什么软件制表,使用Word制作成绩表表格的方法
  7. IM开发干货分享:网易云信IM客户端的聊天消息全文检索技术实践
  8. python第三章_Python学习(第三章)
  9. 以极地号为例认识科考船上的各种设备
  10. 苹果手用计算机解锁手机密码,苹果手机密码忘了怎么解锁(解决方法大全)