Flutter彻底去除水波纹效果,不来看看?

阅读: 评论:0

Flutter彻底去除水波纹效果,不来看看?

Flutter彻底去除水波纹效果,不来看看?

在使用flutter进行开发的时候,按钮等控件点击会有水波纹效果,这是MaterialApp的交互效果,但是很多从原生转到flutter开发的同学,可能很不习惯这样的效果,或者有时候不需要此效果,要怎么搞呢?

设置splashColor

最容易想到的是设置splashColor,如下:

floatingActionButton: FloatingActionButton(onPressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),splashColor: Colors.blue,)

我们只需要设置可点击widget对应的splashColor的颜色和背景色相同就可以,此时水波纹效果还在,只不过我们视觉感知不到了而已。

但是这样设置,如果是在全局ThemeData设置splashColor,我们并不知道应该设置成什么颜色,因为可点击的widget每个都可能有自己的背景颜色,而如果每个widget自己设置splashColor,又显得很繁琐,那有没有一种彻底的方法,让我不再见到这烦人的波纹呢?看官且往下看!

深入源码,斩草除根

我们知道,水波纹的效果其实是 InkWell widget提供,上面提到的设置widget的splashColor,其实就是设置InkWell的splashColor而已。

class InkWell extends InkResponse {const InkWell({Key key,Widget child,GestureTapCallback onTap,GestureTapCallback onDoubleTap,GestureLongPressCallback onLongPress,GestureTapDownCallback onTapDown,...

查看源码可以看到InkWell继承自InkResponse,查看InkResponse的_InkResponseState中的_handleTapDown方法可以看到,点击的时候开启了水波纹:

  void _handleTapDown(TapDownDetails details) {_startSplash(details: details);if (TapDown != null) {TapDown(details);}}

进入_startSplash()方法中,发现在这里创建了InteractiveInkFeature类型的splash

void _startSplash({TapDownDetails details, BuildContext context}) {assert(details != null ||<

本文发布于:2024-01-29 01:52:39,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170646436411863.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:不来   效果   水波纹   Flutter
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23