Flutter ClipPath 自定义CustomClipper 玩转不一样的背景图案
优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维,不局限于思维,不局限语言限制,才是编程的最高境界。
本文章实现的效果如下图所示:
在Flutter工程项目中 单文件启动:
void main() {//启动根目录runApp(MaterialApp(home: ClipperCard(),));
}
class ClipperCard extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(body: Center(//裁剪背景child: ClipPath(//定义裁切路径clipper: BackgroundClipper(),child: buildContainer(context),),),);}//一个普通的背景Container buildContainer(BuildContext context) {return Container(width: MediaQuery.of(context).size.width * 0.8,height: MediaQuery.of(context).size.width * 0.8 * 1.33,//背景装饰decoration: BoxDecoration(//线性渐变gradient: LinearGradient(//渐变使用到的颜色colors: [Colors.orange, Colors.deepOrangeAccent],//开始位置为右上角begin: Alignment.topRight,//结束位置为左下角end: Alignment.bottomLeft,),),);}
}
自定义的 BackgroundClipper 裁剪路径如下:
class BackgroundClipper extends CustomClipper<Path> {@overridePath getClip(Size size) {double roundnessFactor = 50.0;Path path = Path();//移动到A点path.moveTo(0, size.height * 0.33);//画直线到B点 同时也充当 下一个二阶贝塞尔曲线 的起点path.lineTo(0, size.height - roundnessFactor);//二阶贝塞尔曲线 只有一个控制点// 控制点 C (0, size.height)// 终点 D (roundnessFactor, size.height)path.quadraticBezierTo(0, size.height, roundnessFactor, size.height);//二阶贝塞尔曲线 只有一个控制点//画直线到 E点 同时也充当 二阶贝塞尔曲线 的起点path.lineTo(size.width - roundnessFactor, size.height);// 控制点 F (size.width, size.height)// 终点 G (size.width, size.height - roundnessFactor)path.quadraticBezierTo(size.width, size.height, size.width, size.height - roundnessFactor);//二阶贝塞尔曲线 只有一个控制点//画直线到 H 点 同时也充当 二阶贝塞尔曲线 的起点path.lineTo(size.width, roundnessFactor * 2);// 控制点 M 与 终点 Kpath.quadraticBezierTo(size.width - 10, roundnessFactor,size.width - roundnessFactor * 1.5, roundnessFactor * 1.5);//二阶贝塞尔曲线 只有一个控制点//画直线到 T点 同时也充当 二阶贝塞尔曲线 的起点path.lineTo(roundnessFactor * 0.6, size.height * 0.33 - roundnessFactor * 0.3);//控制点 W Zpath.quadraticBezierTo(0, size.height * 0.33, 0, size.height * 0.33 + roundnessFactor);return path;}@overridebool shouldReclip(CustomClipper<Path> oldClipper) {return true;}
}
使用了多个 二阶贝塞尔曲线 ,点位分析如下:
二阶贝塞尔曲线 quadraticBezierTo 方法图示
三阶贝塞尔曲线 cubicTo
【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注
【x2】各种系列的视频教程 免费开源 关注 你不会迷路
【x3】系列文章 百万 Demo 随时 复制粘贴 使用
【x4】简短的视频不一样的体验
【x5】必须有源码
不局限于思维,不局限语言限制,才是编程的最高境界。
以小编的性格,肯定是要录制一套视频的,随后会上传
有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人
Flutter ClipPath 自定义CustomClipper 玩转不一样的背景图案相关推荐
- Flutter 裁剪布局之 ClipRect、ClipRRect、ClipOval、ClipPath、CustomClipper
文章目录 裁剪布局 ClipRect ClipRRect ClipOval ClipPath 及 CustomClipper 参考: Flutter 裁剪类组件 最全总结 5.7 剪裁(Clip) 裁 ...
- Flutter:使用 CustomClipper 绘制 N 角星
本文将向您展示如何使用Flutter 中的**CustomClipper类绘制n 角星**(5 角星.6 角星.10 角星.20 角星等).无需安装任何第三方软件包.我们将从头开始制作东西. 重点是什 ...
- 周末也需要学习 分享一个 Flutter 波浪波动效果的登录页面的背景 Flutter ClipPath实现的波动
优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维,不局限于思维,不局限语言限制,才是编程的最高境界. 优美的音乐节奏带你浏览这个效果的编码过程 坚持每一天, ...
- 在 Flutter 中自定义画笔 Painter
在 Flutter 中自定义画笔 Painter 前言 今天我们将讨论定制 Painter,首先我们将看看什么时候使用定制 Painter,定制 Painter 是如何工作的,最后但并非最不重要的是, ...
- Flutter APPbar 自定义icon
Flutter APPbar 自定义icon appBar: AppBar(title: Text("Home"),leading: Builder(builder: (Build ...
- 绝地求生自定义服务器租一天多少钱,绝地求生自定义服务器怎么玩 绝地求生自定义服务器玩法解析...
绝地求生自定义服务器怎么玩,绝地求生自定义服务器是游戏中新上线的玩法模式,相信许多吃鸡玩家都非常好奇自定义模式的玩法,今天小编就为大家分享下绝地求生自定义服务器玩法解析. 绝地求生自定义服务器玩法解析 ...
- 绝地求生自定义服务器租一天多少钱,绝地求生自定义服务器怎么玩 自定义服务器玩法一览...
绝地求生自定义服务器马上就要上线了,那么自定义服务器要怎么玩呢?下面小编就给大家带来自定义服务器的玩法讲解,对自定义服务器感兴趣的小伙伴一起来看看啊. 自定义服务器玩法一览 为了让每位玩家可以创建自己 ...
- 自定义服务器怎么进去,绝地求生自定义服务器玩法介绍 自定义服务器怎么玩...
绝地求生自定义服务器玩法介绍,自定义服务器马上就要上线了,相信不少玩家也是期待已久了,那么自定义服务器怎么玩呢?下面就来一起看下吧. 绝地求生自定义服务器玩法解析 为了让每位玩家可以创建自己的游戏房间 ...
- Flutter ScaleWidget 自定义刻度尺
Flutter ScaleWidget 自定义刻度尺 目录 话不多说,上图 功能 主要类.方法.属性 使用 最后 目录 之前做安Android一直想着自定义View,现在做Flutter了,那么咱们就 ...
最新文章
- python logger
- R语言ggplot2可视化发散型条形图、发散条形图(Diverging Bars)是一种可以同时处理负值和正值的条形图、并按照大小排序区分数据(Diverging Bars)
- Map-Reduce编程模型gif图片解释
- 客户主数据冻结与删除标记位汇总
- 实战|利用机器学习解决一个多分类任务
- 广东计算机应用基础试题及答案2019,2019年计算机应用基础试题库及答案.pdf
- mysql 热迁移,proxmox迁移详解
- java程序流程图_跟我学java编程—绘制流程图其实很简单
- 杂七杂八(7): win7无法安装python3
- 简述基于软件体系结构的软件开发过程
- python编程,毫秒级延时的一种实现方式
- win7默认网关不可用_win7 默认网关不可用
- 「13」朴素贝叶斯Python实战:计算打喷嚏的工人患病的概率
- Mutual Graph Learning for Camouflaged Object Detection阅读笔记
- C++ 求绝对值函数abs()
- lstm需要优化的参数_1-基于LSTM-GA 的股票价格涨跌预测模型
- win8安装sql server2005方法
- 说说我们都怎么面试程序员的
- C语言编写一下棋程序,C语言编写的与电脑下棋程序代码
- [人工智能-深度学习-63]:生成对抗网络GAN - 图片创作:普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程
热门文章
- 不得不赞!一个国内(可能)最好的海量CV数据集获取网站
- OpenPCDet:点云3D目标检测开源库
- NeurlPS 2019丨微软亚洲研究院 5 篇精选论文解读
- 资源分享 | 知识蒸馏总结、应用与扩展(2015-2019)
- 百度发起遥感图像农作物识别大赛—8.5万总奖池邀你建设“美丽乡村”
- 独家总结 | 决策树算法Python实现(附代码详解及注释)
- 数据结构练习题之树和图(附答案与解析)
- 理解SSD多盒-实时目标检测
- HTML页面把list转成array,c# – 将Collection转换为Array或List的快速方法?
- hj212协议数采仪_CEMS系统配套用环保数采仪 HJ212协议上传