[译] 教你如何用 Flutter 的 GestureDetector 构建自定义滑块

在此之前,很明显我们需要维护一个控件,它显示一个已填充的给定百分比的进度条。在构建 UI 时,最好考虑一下这些控件,它们不具有任何状态,但会显示父级控件所提供的内容。

所以,让我们开始声明控件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个控件非常简单,我们接收完成的百分比值,以及正面和背面部分的颜色。主 Container 将背面颜色作为背景,我们将绘制正面部分去覆盖它。它的子节点是 Row,虽然它只包含一个子节点,但我保留了它,方便你添加另一个 Container,它可以显示背面的部分或其中的一些信息(例如,剩余的百分比)。通过从 Container 的总宽度中取相同的百分比,计算并显示已完成百分比的 Containerwidth

接下来,我们从主要的 App 类开始。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显然,现在我们必须声明 MyHomePage 类,现在这个类应该能够使用我们上面编写的 CustomSlider 控件,并处理手势检测部分,其中用户可以拖动来增加和减少滑块显示的百分比。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个控件必须是有状态的,因为要追踪其百分比。在这里,我们声明了控件的颜色,并将初始百分比保持为 0.0。另外还要注意,现在我们有一个显示舍入百分比的 Text,它与 CustomSlider 一起在屏幕上居中。

现在,请注意我们用 GestureDetector 控件包围住了 CustomSlider 控件。我们接下来的工作就是,给控件注入活力,使用 GestureDetector 控件来捕获用户的拖动事件。

让我们看看实现这部分的代码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是添加了拖动部分的完整代码。GestureDetector 控件加入了 onPanStartonPanUpdateonPanEnd 属性来处理拖动的手势。我希望这些命名能表明其各自的用途。

为了知道用户拖动了多少,我们存储了拖动开始的位置,每次用户移动他/她的手指时,都会在 onPanUpdate 方法中计算距离。接着将距离除以滑块的宽度 200。然后我们简单地将计算完的距离添加到百分比的位置,设置值为 0.0 到 100.0 之间。该值不会超过滑动块的边界,这对于百分比的值来说是自然而然的事情。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

设计模式学习笔记

设计模式系列学习视频

以看到全部内容](https://bbs.csdn.net/topics/618156601)】。**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值