当前位置:   article > 正文

Flutter UI基础 - Widgets 之 InkWell 和 Ink_inkwell 不显示

inkwell 不显示

InkWell

InkWell组件在用户点击时出现“水波纹”效果,InkWell简单用法:

  1. InkWell(
  2. onTap: (){},
  3. child: Text('这是InkWell点击效果'),
  4. )

onTap是点击事件回调,如果不设置无法出现“水波纹”效果,效果如下:

 

设置水波纹颜色: 

  1. InkWell(
  2. onTap: () {},
  3. splashColor: Colors.red,
  4. ...
  5. )

效果如下:

 

 

 

设置高亮颜色: 

  1. InkWell(
  2. onTap: () {},
  3. highlightColor: Colors.blue,
  4. ...
  5. )

高亮颜色是按住时显示的颜色,效果如下:

给字体添加边距和圆角边框,扩大“水波纹”效果:

  1. InkWell(
  2. onTap: (){},
  3. child: Container(
  4. padding: EdgeInsets.symmetric(horizontal: 20,vertical: 8),
  5. decoration: BoxDecoration(
  6. border:Border.all(color: Colors.blue),
  7. borderRadius: BorderRadius.all(Radius.circular(30))
  8. ),
  9. child: Text('这是InkWell点击效果'),
  10. ),
  11. )

效果如下:

发现“水波纹”超出的了圆角边框,如何解决这个问题呢?Ink隆重登场。

Ink

Ink的官方解释:

A convenience widget for drawing images and other decorations on [Material] widgets, so that [InkWell] and [InkResponse] splashes will render over them.

简单翻译:Ink控件用于在[Material]控件上绘制图像和其他装饰,以便[InkWell]、[InkResponse]控件的“水波纹”效果在其上面显示。

上面的问题修改代码如下:

  1. Ink(
  2. decoration: BoxDecoration(
  3. gradient: LinearGradient(
  4. begin: Alignment.topLeft,
  5. end: Alignment.bottomRight,
  6. colors: [Color(0xFFDE2F21), Color(0xFFEC592F)]),
  7. borderRadius: BorderRadius.all(Radius.circular(20))),
  8. child: InkWell(
  9. borderRadius: BorderRadius.all(Radius.circular(20)),
  10. child: Container(
  11. padding: EdgeInsets.symmetric(vertical: 8, horizontal: 20),
  12. child: Text(
  13. '这是InkWell的点击效果',
  14. style: TextStyle(color: Colors.white),
  15. ),
  16. ),
  17. onTap: () {},
  18. ),
  19. )

效果如下:

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/882711
推荐阅读
相关标签
  

闽ICP备14008679号