Flutter使用BorderRadiusTween实现由矩形变成圆形的动画

ops/2025/1/12 20:12:51/

BorderRadiusTween 是插值动画中,用于组件边框半径的类,专门作用于组件边框和半径动化过度。

这个类继承自Tween,用法相似。

下面是示例写法

class BorderRadiusTweenPage extends StatefulWidget {@overrideState<StatefulWidget> createState() {return _BorderRadiusTweenPageState();}
}class _BorderRadiusTweenPageState extends State<BorderRadiusTweenPage>with SingleTickerProviderStateMixin {late AnimationController _animationController;late Animation _animation;@overridevoid initState() {// TODO: implement initStatesuper.initState();_animationController =AnimationController(vsync: this, duration: Duration(seconds: 2))..repeat(reverse: true);_animation = BorderRadiusTween(begin: BorderRadius.circular(0), end: BorderRadius.circular(100)).animate(_animationController)..addStatusListener((status) {if (status == AnimationStatus.completed) {_animationController.reverse();} else if (status == AnimationStatus.dismissed) {_animationController.forward();}});_animationController.forward();}@overridevoid dispose() {_animationController.dispose();// TODO: implement disposesuper.dispose();}@overrideWidget build(Object context) {return Center(child: AnimatedBuilder(animation: _animation,builder: (context, child) {return Container(width: 200,height: 200,decoration: BoxDecoration(color: Colors.amber, borderRadius: _animation.value),);}),);}
}

 与其他构造动画时候的套路是一致的,首先需要AnimateController和Animation这两个类。

在Tween的begin和end中,参数需要指定BorderRadius.circular 用于指定矩形圆角的过渡。

在下方build方法中的BoxDecoration类是用于修饰Container类,用于指定边框,圆角,阴影等等。


http://www.ppmy.cn/ops/149538.html

相关文章

Rust 1.84.0 发布

Cargo 依赖版本选择改进 稳定了最小支持 Rust 版本&#xff08;MSRV&#xff09;感知的解析器&#xff0c;该解析器会优先选择与项目声明的 MSRV 兼容的依赖版本&#xff0c;减少了维护者支持旧工具链的工作量&#xff0c;无需手动为每个依赖选择旧版本。可以通过.cargo/config…

简单易用的PDF工具箱

软件介绍 PDF24 Creator是一款简单易用的PDF工具箱&#xff0c;而且完全免费&#xff0c;没有任何功能限制。既可以访问官网在线使用各种PDF工具&#xff0c;也可以下载软件离线使用各种PDF工具。 软件功能 1、PDF转换 支持将多种文件格式&#xff08;Word、PowerPoint、Exc…

Linux:进程概念(二.查看进程、父进程与子进程、进程状态详解)

目录 1. 查看进程 1.1 准备工作 1.2 指令&#xff1a;ps—显示当前系统中运行的进程信息 1.3 查看进程属性 1.4 通过 /proc 系统文件夹看进程 2. 父进程与子进程 2.1 介绍 2.2 getpid() \getppid() 2.3 fork()函数—通过系统调用创建进程 fork()函数疑问 3. 进程状态…

Web渗透测试之XSS跨站脚本 原理 出现的原因 出现的位置 测试的方法 危害 防御手段 面试题 一篇文章给你说的明明白白

目录 XSS介绍的原理和说明 Cross Site Scripting 钓鱼 XSS攻击原理 XSS漏洞出现的原因: XSS产生的原因分析 XSS出现位置: XSS测试方法 XSS的危害 防御手段: 其它防御 面试题: 备注: XSS介绍的原理和说明 嵌入在客户端脚本 对客户端进行攻击的Owstop ten 十大漏…

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

android ROM开发网络下载速度缓慢问题解决方案

由于近期公司项目不断有客户反馈文件下载速度太慢&#xff0c;之前一直以为是客户网络环境原因就没有太在意&#xff0c;直到有反馈说有线网络下载比wifi网络下载要慢很多&#xff0c;网络环境带宽网速等都没问题。详细对比测试后发现的确如此&#xff0c;wifi环境下载能达到10…

pdf提取文本,表格以及转图片:spire.pdf

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380; 1. pdfbox1.1导入pdfbox 的maven依赖1.1 提取文本1.2 提取文本表格&#xff08;可自行加入逻辑处理&#xff09;1.3 pdf转换成图片代码&…

linux下的MongoDB手动安装部署详解

MongoDB数据库很常用.但是有时候难免需要手动部署。这里分享下教程笔记&#xff0c;分享给有需要的小伙伴&#xff0c;需要的可以收藏。 要解压和安装 MongoDB&#xff0c;您可以按照以下步骤操作&#xff1a; 下载&#xff1a; https://www.mongodb.com/try/download/commun…