在 Flutter 中,自带手势监听的目前为止好像只有按钮部件和一些 chip 部件,例如 Text 等部件需要实现手势监听,就需要借助带有监听事件的部件来实现了,这节我们会讲下 InkWell 和 GestureDetector...InkWell 在前面的一些例子中,小伙伴应该看到了好几次 InkWell 这个部件,通过它我们可以实现对一些手势的监听,并实现 MD 的水波纹效果,举个简单的一个例子 InkWell( child...InkWell 是在 MaterialDesign 风格下的一个用来响应触摸的矩形区域(注意加粗的文字,1.如果不是 MD 风格的部件下,你是不能用这个来做点击响应的;2.InkWell 是一块矩形区域...,如果你要的是圆形区域,8 好意思,不行!)...InkWell 必须要有一个 Material 风格的部件作为锚点,巴拉巴拉巴拉....再次强调必须要在 MD 风格下使用。
任何人都可以建议创建一个自定义按钮的方式/需要什么FloatingActionButton吗? 我认为RawMaterialButton更适合。...来做到这一点: 响应触摸的材料的矩形区域。...Colors.black38)), ),//............ ), ), ); } } 如果要利用splashColor,请使用材料类型为circle的小部件...highlightColor包装InkWell小Material部件。...Colors.white, onPressed: () {}, ), ), 实际上,有一个示例如何创建类似于FloatingActionButton的圆形
和尚在学习 Flutter过程中遇到很多有趣的小知识点,平时可能不太注意或一些简单直接的小功能点,准备整理一个小系列,方便日后的查找使用。 1....InkWell 水波纹效果 和尚在 Android的项目中很多需要水波纹的点击效果,Flutter当然也提供了类似的效果,除了 FlatButton按钮系列外,Flutter还提供了 InkWell...注意事项: 使用 InkWell时内外层均不建议添加背景色,InkWell默认的水波纹颜色很浅,背景色会遮挡波纹效果; 通过修改 splashColor: Colors.greenAccent,属性可以动态修改水波纹的波纹颜色...Wrap 流式布局 和尚需要在每行布局中根据文字内容长度自定义展示个数,单独的用 Row和 Column不能实现很好的效果,这时候发现 Flutter提供的强大的 Wrap流式布局,自动根据需要显示的内容设置宽度...---- 和尚刚接触 Flutter时间不长,还有很多不清楚和不理解的地方,如果又不对的地方还希望多多指出。以下是和尚公众号,欢迎闲来吐槽~
Flutter 的一个核心设计理念: 任何 Widget 都可以有交互 GestureDetector 和 InkWell 的作用是: 给任意 Widget 添加点击、滑动等手势能力 二、GestureDetector...✅ 非常灵活 ❌ 没有水波纹 ❌ 用户感知较弱 三、InkWell:带水波纹的点击(重点) 1️⃣ 什么是 InkWell?...InkWell 是 Material 体系的一部分,特点是: 点击时有水波纹效果 2️⃣ 基本用法 InkWell( onTap: () { print('点击了'); }, child...InkWell 是否有反馈 ❌ ✅ 是否依赖 Material ❌ ✅ 灵活度 ⭐⭐⭐⭐⭐ ⭐⭐⭐ 常见场景 自定义交互 列表 / 卡片 经验法则: 列表、卡片 → InkWell 高度自定义 →...下一篇我们将学习: 什么是“状态” StatelessWidget vs StatefulWidget setState 的作用 点击后界面如何更新 从下一篇开始: Flutter 真正的“动态 UI
状态栏方面,Android平台默认是半透明的效果,IOS则是透明效果。比如Android要实现IOS的效果,可以设置状态栏为透明。不过IOS要实现Android的效果则不行。。。,难道只能自定义?...比较成熟有效的方案是在键盘弹出的上方悬浮一个按钮,点击可以关闭键盘。当然了,这种问题也有对应的库可以解决,我使用的是flutter_keyboard_actions来解决了这个问题。...---- InkWell有的叫溅墨效果,有的叫水波纹效果。...使用场景是给一些无点击事件的部件添加点击事件时使用(也支持长按、双击等事件),同时你也可以去修改它的颜色和形状。...主要原因是溅墨效果是在一个背景效果,并不是覆盖的前景效果。所以InkWell中的child一旦有设置背景图或背景色,那么就会遮住这个溅墨效果。如果你需要这个溅墨效果,有两种方式实现。
前面的小节把常用的一些部件都介绍了,这节介绍下 Flutter 中的一些操作提示。...,请注意看 fab 和值的变化: ?...可以看到 showBottomSheet 会充满整个屏幕,然后 fab 会跟随一起到 AppBar 的底部位置,而 showModalBottomSheet 展示的高度不会超过半个屏幕的高度,但是 fab...children: [Text('我是个比较正经的对话框内容...你可以随便把我替换成任何部件,只要你喜欢(*^▽^*)')], ))...AboutDialog 会自带两个按钮 VIEW LICENSES 和 CLOSE,VIEW LICENSES 会跳转一个 Flutter Licenses 的网页,CLOSE 会关闭,至于为什么是英文的
鸿蒙集成 从0到1自学C++ Text、Image、Button 是 Flutter 最核心的基础 UI 组件,掌握其核心属性和实用技巧能大幅提升开发效率。...一、Text 组件:文本展示与样式控制 Text 用于展示静态/动态文本,核心是通过 TextStyle 控制样式,适配不同场景的文本展示需求。 1....基础用法 最简化的用法仅需传入文本内容,Flutter 会使用默认样式(系统字体、黑色、14sp 左右): Text("Hello Flutter"); 2....基础用法 所有按钮的核心是 onPressed(null 时按钮禁用),child 为按钮内容: // 1....:优先使用系统提供的 ElevatedButton/TextButton,自定义样式用 styleFrom,高频场景加防抖。
我在之前的文章文本、图片和按钮在Flutter中怎么用中,简单介绍过按钮组件,本篇文章来详细聊聊Flutter中的各种按钮组件的各种应用场景。...实际上,RaisedButton是立体效果的,而FlatButton是扁平化的平面效果;OutlineButton是边框按钮,对齐设置背景颜色是不起效果的。...FloatingActionButton有如下属性: child,一般为Icon,不推荐使用文字 tooltip,FAB被长按时显示,也是无障碍功能 backgroundColor,背景颜色 elevation...,未点击的时候的阴影 highligntElevation,点击时候的阴影值,默认是12.0 onPressed,点击事件回调 shape,可以定义FAB的形状等 首先我们先在一个普通页面展示一下FloatingActionButton...4,floatingActionButton的 child 属性,我们一般是给其配置成Icon,不建议给其配置成其他组件。 接下来,我们来聊一聊如何实现闲鱼底部Tabbar上的凸起按钮的效果。
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本:1.12.13+hotfix.5 Dart版本:2.7.0 Flutter内置了10多种Button(按钮)类控件供我们使用...onPressed为null或不设置时,按钮是禁用状态。...默认情况下,下拉选项的图标是倒立的三角,也可以进行自定义,用法如下: DropdownButton( icon: Icon(Icons.add), iconSize: 24, iconDisabledColor...RawMaterialButton RawMaterialButton是基于Semantics, Material和InkWell创建的组件,它不使用当前的系统主题和按钮主题,用于自定义按钮或者合并现有的样式...如果开发的是web程序,我们可以设置鼠标悬停颜色: ToggleButtons( hoverColor: Colors.cyan, ) 欢迎加入Flutter的微信交流群(mqd_zzy
版本及Dart版本如下:Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我们使用,了解这些控件有助于提高我们的开发速度...: (){ }, ) 效果: [1240] onPressed为null或不设置时,按钮是禁用状态。...,比如设置为圆形,代码如下: RaisedButton( shape: CircleBorder(), ... ) 效果如下: [1240] 和hover相关的属性是指鼠标悬停时的状态,移动端没有效果...效果如下: [strip] 如果你对选中的选项的样式不满意,可以自定义,用法如下: DropdownButton( selectedItemBuilder: (context){ return..., Material和InkWell创建的组件,它不使用当前的系统主题和按钮主题,用于自定义按钮或者合并现有的样式,而RaisedButton和FlatButton都是基于RawMaterialButton
本篇分享一个简单轻松的内容: ThemeExtensions 和 Material3 ,它们都是 Flutter 3.0 中的重要组成部分,相信后面的小知识你可能还没了解过~。...ThemeExtensions相信大家都用过 Flutter 里的 Theme ,在 Flutter 里可以通过修改全局的 ThemeData 就来实现一些样式上的调整,比如 :全局去除 InkWell...theme: ThemeData( primarySwatch: Colors.blue, // 去掉 InkWell 的点击水波纹效果 splashFactory: NoSplash.splashFactory...Material3Material3 又叫 MaterialYou , 是谷歌在 Android 12 时提出的全新 UI 设计规范,现在 Flutter 3.0 里你可以通过 useMaterial3...更多可见 《HCT 的色彩原理》最后最后我们回顾一下,今天的小技巧有:通过 ThemeExtensions 拓展想要的自定义 ThemeData通过 useMaterial3 启用 Material3
终于把基本的组件扯完了,真的是多如牛毛。现在让我们来看一下控件如何实现交互 最后会实现一个简单的有点笔触效果的画布,来说明如何使用手势交互。...Widget 2.1:响应事件的盒子 既然GestureDetector的onTap可以传入一个函数作为回调处理,那何妨一试 var box = Container( color: Colors.cyanAccent...InkWell也是一个拥有事件处理能力的组件,只不过支持的事件比较少 常用包括点击,双击,长按,按下,特点是有水波纹效果(注:Container背景色会掩盖水波纹)。...需要的知识点:Flutter中的手势交互,主要是移动相关 1.一条线是点的集合,绘板需要画n条线,所以是点的集合的集合 _lines 2.组件为有状态组件,_lines为状态量,在移动时将点加入当前所画的线...,不过作为手势的交互应用的例子还是不错的 class TolyCanvas extends StatefulWidget{ @override State createState
按钮一族现状 随着 Flutter 3.3 的发布,RaisedButton 组件从 Flutter 框架中移除,曾为界面开疆拓土的 按钮三兄弟 彻底成为历史。...另外 MaterialButton、RawMaterialButton 也将在未来计划被废弃,所以不建议大家再使用了: ---- 目前,取而代之的是 TextButton 、ElevatedButton...三个按钮组件的默认表现 如下,是 ElevatedButton 的默认表现:有圆角和阴影,在点击时有水波纹。...按钮的事件 这三个按钮在构造时都需要传入 onPressed 参数作为点击回调。...构建的组件也就是按钮的最终表现,其中使用了 ConstrainedBox 组件处理约束;Material 组件处理基本表现内容;InkWell 处理水波纹和相关事件;Padding 用于处理内边距;Align
这里每一个圆形都是同一个数据。 现在这个圆形的数据被修改了,我们要更新这个页面上所有的数据,是不是很麻烦? Flutter为我们考虑到了。...给定ValueListenable 一个泛型和一个构建器,它从泛型的具体值构建小部件,这个类将自动注册为ValueListenable 的侦听器,并在值更改时用更新的值调用构建器。...自定义页面展示 ValueListenableBuilder 自定义一个小Demo: ?...所以我们在 initState() 方法中初始化了 _contentWidget,来作为ListView 的 ·正文·。...Flutter 确实为我们提供了特别多特别方便的控件。 关注我,以后还会更新更多有用的Widget。
虽然我们已经创建了一个自定义按钮来演示这些概念,但Flutter包括一些开箱即用的按钮:RaisedButton,FlatButton和CupertinoButton 完整例子 import 'package...添加材质涟漪效果 在设计应遵循材质设计指南的应用程序时,我们希望在点击时将涟漪动画添加到部件。 Flutter提供InkWell部件来达到这个效果。...路线 创建一个我们想要点击的部件 将其包装在InkWell部件中以管理点击回调和涟漪动画 // The InkWell Wraps our custom flat button Widget new InkWell...Flutter通过提供Dismissible部件使这项任务变得简单。...路线 创建条目列表 将每个项目包裹在Dismissible部件中 提供“向后消除”指标 1.创建条目列表 这个配方的第一步是创建一个我们可以滑动的项目列表。
) { /// 布局裁剪组件 , 可以将布局裁剪成圆形 return ClipOval( /// 可用于约束布局大小的组件 /// 这里的居中显示是关键 , 如果不居中显示...), ), ), ); } } 组件形状显示分析 : ① 方形裁剪组件 : ClipOval 组件区域是 红色 矩形所在位置 , 其裁剪区域是蓝色组件位置 , 如果正好有个方形的组件..., 组件是圆形的 , 执行后组件是方形的 , 这就是改变了外层的 ClipOval 组件的大小 , 导致形状改变 ; 二、创建页面 1 的组件 ( Hero 组件 1 ) ---- 页面 1 的 Hero...组件显示的圆形的 , 跳转到页面 2 后 , 相同 tag 的 Hero 组件显示方形 ; 控制 OvalRectWidget 是圆形还是方形 , 主要是控制 OvalRectWidget 组件的宽高...) { /// 布局裁剪组件 , 可以将布局裁剪成圆形 return ClipOval( /// 可用于约束布局大小的组件 /// 这里的居中显示是关键 , 如果不居中显示
它可以包含图标而不是文本,适用于空间有限或需要图形化表示的地方。 5. FloatingActionButton:这是一个圆形的按钮,通常悬浮在内容上方,用于促进应用中的主要动作,如添加、编辑等。...InkWell:虽然不是一个标准的按钮组件,但它可以用来给几乎任何widget添加水波纹效果,从而制作自定义按钮。...默认大小是 24.0。 3. color (Color): 图标的颜色。 4. semanticLabel (String): 用于辅助技术的标签。...中,用于显示图片的主要组件是 Image。...2. width (double): 图片的宽度。如果不设置,图片会根据其父组件和其他内容自动调整大小。 3. height (double): 图片的高度。同样,如果不设置,会自动调整。
,我们用手去tap按钮是没有互动效果的,也就是说按钮是不会变化的。...那么有没有可能模拟手指的按压效果呢?答案是肯定的,flutter为我们提供了一个InkWell组件,这样手指按压下组件会产生波纹的效果。那么InkWell和GestureDetector有什么联系呢?...,这里onTap选择展示一个flutter自带的SnackBar。...flutter提供了一个Dismissible的组件来实现这个效果。...本文的例子:https://github.com/ddean2009/learn-flutter.git更多内容请参考 www.flydean.com最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现
系列引言 可能说起 Flutter 绘制,大家第一反应就是用 CustomPaint 组件,自定义 CustomPainter 对象来画。...水波纹系列 RawMaterialButton 系列的组件,底层都依赖于 InkWell ,在测试中发现水波纹效果会触发自定义画板的不断重绘。如下: ?...= color; } } 复制代码 ---- 调试一下可以看到,上界如下,不知道是官方少加了 RepaintBoundary 下界,还是另有考虑。...解决方案是在绘制的组件上套一个 RepaintBoundary 。 ? ---- 2.输入框系列 在输入框收起打开时,会触发自定义画板的绘制,而且随着打开次数的增加,绘制越多,感觉像是 bug 。...当然这些只是我遇到的,当你自定义的绘制出现卡顿或频繁重绘时,也要注意一下。 ---- 通过本文,你应该对 Flutter 中的绘制范围有了更深的认识。
“本文主要介绍具有自定义导航栏的渐进式 Web 应用程序 让我们准备我们的 - “Main.dart” 我们将整个页面分成几个部分,以便于制定,我建议您这样做以获得更好的编程,让我们更详细地查看这些部分...- 并创建一个名为 - “CompanyName.dart”的文件 - 创建一个名为 CompanyName 的无状态小部件,它返回 Row() 小部件内的两个“文本”小部件。...- 创建一个名为 NavBar 的有状态小部件,它将“NavBar”列表作为 Column() 返回。...我们可以假设,这些是按钮,所以我们可以使用 - “InkWell” - 小部件,它具有 Ontap() 函数,它被包裹着 - “材料”小部件,并取消材料小部件的默认颜色我们手动使颜色透明。...这与往常一样带有 4 个文本小部件的行。