Flutter-加载中动画

效果

考察内容

  • AnimationController
  • Tween
  • AnimatedBuilder
  • Transform
  • Matrix4

实现

///源码:https://github.com/yixiaolunhui/flutter_xy
class LoadingView extends StatefulWidget {const LoadingView({Key? key}) : super(key: key);@overrideState<LoadingView> createState() => _LoadingViewState();
}class _LoadingViewState extends State<LoadingView>with TickerProviderStateMixin {late AnimationController _controller;late Animation<double> _rotationAnimation;late Animation<double> _radiusAnimation;var size = 160.0;@overridevoid initState() {super.initState();_controller = AnimationController(duration: const Duration(seconds: 2),vsync: this,);_rotationAnimation = Tween<double>(begin: 0.0, end: pi).chain(CurveTween(curve: Curves.easeInOut)).animate(_controller);_radiusAnimation = Tween(begin: size / 2, end: 5.0).chain(CurveTween(curve: Curves.easeInOut)).animate(_controller);_controller.addStatusListener((status) {if (status == AnimationStatus.completed) {_rotationAnimation = Tween<double>(begin: _rotationAnimation.value % (2 * pi),end: _rotationAnimation.value % (2 * pi) + pi,).chain(CurveTween(curve: Curves.easeInOut)).animate(_controller);_radiusAnimation = Tween<double>(begin: _radiusAnimation.value == size / 2 ? size / 2 : 5.0,end: _radiusAnimation.value == size / 2 ? 5.0 : size / 2,).chain(CurveTween(curve: Curves.easeInOut)).animate(_controller);_controller..reset()..forward();}});_controller.forward();}@overridevoid dispose() {_controller.dispose();super.dispose();}@overrideWidget build(BuildContext context) {return AnimatedBuilder(animation: _controller,builder: (BuildContext context, Widget? child) {return Stack(clipBehavior: Clip.none,alignment: Alignment.center,children: [for (var i = 0; i < 5; i++)Transform(alignment: Alignment.center,transform: Matrix4.identity()..rotateZ(_rotationAnimation.value + i * 0.2),child: Container(width: size - i * 30,height: size - i * 30,decoration: BoxDecoration(color: Colors.deepPurple[400 - i * 100],borderRadius: BorderRadius.circular(_radiusAnimation.value),),),),],);},);}
}

使用

///源码:https://github.com/yixiaolunhui/flutter_xy
class LoadingPage extends StatelessWidget {const LoadingPage({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("动画"),),body: const Center(child: LoadingView()),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690176.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新都区新都街道沱江社区:共建“微花园”,愿景变实景!

“你看嘛&#xff0c;本来是一个很好的锻炼身体的地方&#xff0c;现在看起来乱糟糟的&#xff0c;大家都很少去运动。”这是一位来自沱江社区自建区居民的心声。 灰扑扑的运动角 杂草丛生闲置空地 …… 本应该是提升居民幸福感的“小角落” 却变成了遭人冷落的“灰色空间…

maven找不到依赖,in offline mode

问题描述&#xff1a; [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

mac第三方软件怎么删除 MacBook卸载第三方应用程序 mac第三方恶意软件删除不了怎么办呢

Mac是一款优秀的个人电脑&#xff0c;它拥有流畅的操作系统、强大的性能和丰富的应用程序。但是&#xff0c;随着使用时间的增加&#xff0c;你可能会发现你的Mac上安装了一些不需要或者不喜欢的第三方软件&#xff0c;这些软件可能会占用你的空间、影响你的速度或者带来安全风…

图片识别公式神器推荐_mathpix

你是否遇到在某个资料上看到一个很复杂的公式&#xff0c;但有懒得再 word 或者其他文件上打出来。 比如这个&#xff1a; 如果直接截图的话&#xff0c;只能说非常丑陋。 推荐一个网站 mathpix&#xff0c;点击 try for free&#xff0c;注册登录。 Mathpix: AI-powered doc…

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类&#xff08;NBC&#xff09;是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法&#xff0c;先通过已给定的训练集&#xff0c;以特征词之间独立作为前提假设&#xff0c;学习从输入到输出的联合概率分布&#xff0c;再基于学习…

ApiHug Official Website

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | MarketplaceApiHug-H…

三轴 MEMS 加速度传感器

功能概述 本模块为了对电机、风机、水泵等旋转设备进行预测性运维而开发&#xff0c;只需一 个模块&#xff0c;就可以采集电机的 3 路振动信号&#xff08;XYZ 轴&#xff09;和一路温度信号&#xff0c;防护等 级 IP67 &#xff0c;能够适应恶劣的工业环境。 传感器自动计算…

python实现九宫格图片切割

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.分析 一.前言 朋友圈九宫格是一种在社交媒体上展示图片或内容的常见布局方式,特别是在微信朋友圈中非常流行。这种布局由九个相同大小的格子组成,通常用于展示一组相关的图片或内容。&…

PMP证书如何备考?

每个过了PMP考试的考生&#xff1a;“你是如何学习和准备的”&#xff1f;答案基本分三类&#xff1a; 第一种是“临时抱佛脚”式&#xff1b;第二种是“持续抗战式”&#xff1b;第三种是“疲劳作战式”。 第一种比较符合人性和期望—20世纪三大管理定义之一的帕金斯定律&am…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;四&#xff09; 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第三部分&#xff1a;工具使用 工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超…

知行之桥EDI系统跨平台版本安装报错及解决方案

本文将为大家介绍如何在Windows系统中安装知行之桥EDI系统跨平台版本的常见报错以及解决方案。如下图所示&#xff1a; 在知行软件官网的导航栏中点击 下载 按钮&#xff0c;即可看到知行之桥EDI系统不同版本的下载选项&#xff0c;点击右侧跨平台版本&#xff0c;选择 Windows…

【日志革新】在ThinkPHP5中实现高效TraceId集成,打造可靠的日志追踪系统

问题背景 最近接手了一个骨灰级的项目&#xff0c;然而在项目中遇到了一个普遍的挑战&#xff1a;由于公司采用 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;作为日志收集和分析工具&#xff0c;追踪生产问题成为了一大难题。尽管 ELK 提供了强大的日志分析功…