当前位置: 首页 > article >正文

Flutter Ink,InkWell,InkResponse水波纹实现(2.3)

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

  • InkWell和InkResponse区别:
  • InkWell
  • InkResponse

InkWell和InkResponse区别:

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

InkWell

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

InkWell参数类型说明
highlightColorColor高亮颜色
splashColorColor水波纹颜色
radiusdouble水波纹半径
borderRadiusBorderRadius水波纹形状
onTapGestureTapCallback单击事件
onDoubleTapGestureTapCallback双击事件
onLongPressGestureLongPressCallback长按事件

简单事例:

	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):
效果图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参数类型说明
highlightColorColor高亮颜色
splashColorColor水波纹颜色
radiusdouble水波纹半径
borderRadiusBorderRadius水波纹形状
onTapGestureTapCallback单击事件
onDoubleTapGestureTapCallback双击事件
onLongPressGestureLongPressCallback长按事件
containedInkWellbool是否剪切为合适角度,建议为设置为true
highlightShapeBoxShapeBoxShape.rectangle矩形(建议使用)
BoxShape.circle圆形
highlightColorColor高亮颜色

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

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

http://www.lryc.cn/news/2419652.html

相关文章:

  • fiddler4使用方法以及相关抓包分析
  • 【同花顺函数汇总】
  • Parse error: syntax error, unexpected ''解决办法
  • 软件设计文档如何编写,设计文档内容都包括什么
  • Tribon二次开发-逆向
  • Oracle GoldenGate(OGG)- 超级详细,五步搞定Golang开发环境部署
  • Chromium 历史版本离线安装包 - 下载方法
  • SharpDevelop源码分析笔记(一)
  • readonly和disabled的作用?区别?别翻了,这有精细汇总齐的秘籍!
  • 交互设计的视觉设计:如何创造吸引人的视觉效果
  • sdcard-dma
  • python爬虫最简单入门
  • 条件编译指令的用法总结
  • 手把手教你如何在Linux上安装Deb软件包 (linux 安装 deb)
  • MessageBox.Show 用法介绍
  • GeoGebra
  • 计算机网络中的NET与应用中的.NET
  • TOMCAT的配置(整理)
  • C语言小游戏--贪吃蛇(完整代码)
  • html入门:网页字体的设置
  • 【Bilibili直播源】浏览器抓取真实直播源地址(纯前端JS PHP解析源码)
  • 通过socketpair()函数实现同一进程内部的进程间通信(IPC)
  • 被盗14亿账号信息?腾讯紧急宣布!
  • Linux下 mtrace工具排查内存泄露问题
  • 解决xftp6 要继续使用此程序,您必须应用最新的更新或使用新版本
  • 经典java视频教程,个人无私分享
  • 开源 java CMS - FreeCMS1.9公布。
  • 针对搜索引擎的高级搜索方法(Baidu,Google,Bing....)
  • settimer()函数和alarm()函数
  • MTA邮件传送代理--sendmail完全配置