Flutter 旋转动画 线性变化的旋转动画

直接上代码

图片自己添加一张就好了

import 'dart:math';import 'package:flutter/material.dart';import 'package:flutter/animation.dart';void main() => runApp(MyApp());
//旋转动画
class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(color: Colors.blue,home: MyAnimatedWidget(),);}
}class MyAnimatedWidget extends StatefulWidget {_MyAnimatedWidgetState createState() => _MyAnimatedWidgetState();
}class _MyAnimatedWidgetState extends State<MyAnimatedWidget>with SingleTickerProviderStateMixin {late final AnimationController _repeatController;late final Animation<double> _animation;void initState() {super.initState();_repeatController = AnimationController(duration: const Duration(seconds: 3),vsync: this,)..repeat(); // 设置动画重复播放// 创建一个从0到1的补间动画   end: 1 * pi   转速_animation = Tween<double>(begin: 0, end: 1).animate(_repeatController);}Widget build(BuildContext context) {// 你的UI构建代码,使用_animation来控制动画// ...// 示例按钮来停止和继续动画return Column(mainAxisAlignment: MainAxisAlignment.center,children: [Center(child: AnimatedSwitcher(duration: const Duration(milliseconds: 500),transitionBuilder: (child, animation) {return RotationTransition(turns: _animation!,child: child,);},child: Image.asset('assets/shenji2.png',),),),Text('Animation Example'),SizedBox(height: 20,),ElevatedButton(onPressed: () {stopAnimation(); // 停止动画},child: Text('Stop Animation'),),SizedBox(height: 20,),ElevatedButton(onPressed: () {resumeAnimation(); // 继续动画},child: Text('Resume Animation'),),SizedBox(height: 20,),ElevatedButton(onPressed: () {resumeAnimationZY(); // 继续动画},child: Text('Resume Animation2'),),],);}void stopAnimation() {_repeatController.stop();}void resumeAnimation() {_repeatController.repeat(reverse: false);}void resumeAnimationZY() {///左右转动_repeatController.repeat(reverse: true);}void dispose() {_repeatController.dispose(); // 不要忘记在dispose中释放资源super.dispose();}
}

创建一个动画组件给其他界面调用自己回收内存
不规则图片的中心旋转动画

import 'dart:math';import 'package:flutter/material.dart';class AnimatedBox extends StatefulWidget {// final Color color;// final Duration duration;const AnimatedBox({Key? key,}) : super(key: key);_AnimatedBoxState createState() => _AnimatedBoxState();
}class _AnimatedBoxState extends State<AnimatedBox>with SingleTickerProviderStateMixin {late final AnimationController _repeatController;late final Animation<double> _animation;void initState() {super.initState();//启动动画_repeatController = AnimationController(duration: const Duration(seconds: 3),vsync: this,)..repeat(); // 设置动画重复播放// 创建一个从0到1的补间动画_animation =Tween<double>(begin: 0, end: 1 * pi).animate(_repeatController);}Widget build(BuildContext context) {return AnimatedBuilder(animation: _repeatController,builder: (BuildContext context, Widget? child) {return Center(child: Stack(children: [Positioned(top: 0,bottom: 0,left: 0,right: 0,child: Center(child: Image.asset('assets/ic_oxygen_pump_c_10.png', // 你想要居中的组件),),),Positioned(top: 0,bottom: 1.5,left: 0,right: 6,child: Center(child: AnimatedSwitcher(duration: const Duration(milliseconds: 500),transitionBuilder: (child, animation) {return RotationTransition(turns: _animation,child: child,);},child: Image.asset('assets/ic_oxygen_pump_c_polat.png', // 你想要居中的组件),),),),],),);///放大动画/*return Transform.scale(scale: _animation.value,child: Container(width: 100,height: 100,color: widget.color,),);*/},);}void dispose() {///回收动画_repeatController.dispose();super.dispose();}
}

图片是白色的

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

RMAN 备份恢复、删除归档

RMAN冷备全库 rman target / list backup shutdown immediate startup mount #不要自动备份control file set nocfau; #注意要先备份数据库&#xff0c;然后备份控制文件&#xff0c;因为数据库的备份位置记录在控制文件中。 #备份数据库 backup database format /mnt/disk01/r…

vue 中实现下载后端返回的流式数据

验证是否是blob /*** Event 验证是否为blob格式* */export async function blobValidate(data) {try {const text await data.text();JSON.parse(text);return false;} catch (error) {return true;}}get请求 /*** Event: get请求下载后端返回的数据流* description: url[Stri…

Redis-指定配置启动

基础篇Redis 3.3.5.指定配置启动 如果要让Redis以后台方式启动&#xff0c;则必须修改Redis配置文件&#xff0c;就在我们之前解压的redis安装包下&#xff08;/usr/local/src/redis-6.2.6&#xff09;&#xff0c;名字叫redis.conf&#xff1a; 我们先将这个配置文件备份一份…

利用 Scapy 库编写 ARP 缓存中毒攻击脚本

一、ARP 协议基础 参考下篇文章学习 二、ARP 缓存中毒原理 ARP&#xff08;Address Resolution Protocol&#xff09;缓存中毒是一种网络攻击&#xff0c;它利用了ARP协议中的漏洞&#xff0c;通过欺骗或篡改网络中的ARP缓存来实施攻击。ARP协议是用于将IP地址映射到物理MAC…

警务数据仓库的实现

目录 一、SQL Server 2008 R2&#xff08;一&#xff09;SQL Server 的服务功能&#xff08;二&#xff09;SQL Server Management Studio&#xff08;三&#xff09;Microsoft Visual Studio 二、创建集成服务项目三、配置“旅馆_ETL”数据流任务四、配置“人员_ETL”数据流任…

OM6626低功耗M4内核低睡眠电流BLE5.3 SoC国产ESL蓝牙方案芯片

目录 OM6626简介OM6626主要特性射频特性PUM特性安全性SDK代码微信号&#xff1a;dnsj5343OM6626最小系统Demo板 OM6626简介 OM6626是功能强大、性能稳定、超低功耗的蓝牙SoC芯片&#xff0c;适用于各种低功耗蓝牙和专有的2.4GHz应用场景。OM6626还集成了电源管理单元 (PMU)&am…

机器视觉检测设备的组成要素

机器视觉检测设备是一种先进的自动化检测技术工具&#xff0c;它利用光学、图像处理和计算机硬件及软件技术模拟并扩展人类的视觉功能&#xff0c;以实现对产品或目标物体进行自动化的尺寸测量、缺陷检测、表面质量评估、颜色识别、形状匹配以及位置判断等功能。这种设备通常包…

PyCharm环境下Git与Gitee联动:本地与远程仓库操作实战及常见问题解决方案

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言下载及安装GitGit的使用设置用户签名设置用户安全目录Git基本操作Git实操操作 Pyc…

Python高阶函数库之functools使用详解

概要 functools是Python标准库中的一个模块,它提供了一系列用于高阶函数:即那些作用于或返回其他函数的函数。这些工具主要用于函数式编程风格,其中包括用于创建函数包装器的装饰器。 functools简介 functools库的目的是为了高阶函数,特别是那些涉及到函数转换的操作提供…

数据仓库的魅力及其在企业中的应用实践

数据仓库&#xff0c;这一创新性的概念来自于比尔恩门&#xff0c;从1980年代末提出以来&#xff0c;便凭借其独特的架构设计和强大的数据处理能力&#xff0c;在全球商业领域中掀起了一场革命。它不仅是解决企业海量数据存储和查询需求的关键技术&#xff0c;更是推动企业实现…

【Java】哈希表

文章目录 一、概念二、哈希冲突2.1概念2.2设计合理的哈希函数-避免冲突2.3调节负载因子-避免冲突2.4闭散列-冲突解决&#xff08;了解&#xff09;2.5开散列/哈希桶-冲突解决&#xff08;重点掌握&#xff09; 三、代码实现3.1成员变量及方法的设定3.2插入3.3重新哈希3.4 获取到…

免费客服系统大揭秘!有什么好用的免费客服系统推荐?

贵的不一定是好的&#xff0c;合不合适才最重要&#xff01;有什么好用的免费客服系统吗&#xff1f;现下服务经济的发展的风潮已经席卷到了各行各业。 企业不仅要提供好的产品&#xff0c;还需要好的服务。客服系统作为企业与客户重要的沟通渠道&#xff0c;越来越多的企业正在…

记录些LLM相关的知识

SOTA SOTA是"State-of-the-Art"的缩写&#xff0c;指的是某个技术或领域中目前最先进的技术或方法。在语音合成领域&#xff0c;SOTA语音合成效果指的是使用最新的研究和技术所达到的最佳语音合成效果。这通常包括高清晰度的语音输出&#xff0c;自然的语音流畅度&a…

面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch&#xff08;ES&#xff09;&#xff0c;我了解并有经验。在我之前的公司&#xff0c;我们有一个相对大型的ES集群&#xff0c;以下是该集群的架构和一些调优手段的概述&#xff1a; 1. 集群架构 集群规模&#xff1a;我们的ES集群由15个节点组成&#xff0c…

docker配置镜像加速后容器和镜像消失

一、问题描述 根据阿里云给docker配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://gt6j98xi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl rest…

框架结构模态分析/动力时程分析Matlab有限元编程 【Matlab源码+PPT讲义】|梁单元|地震时程动画|结果后处理|地震弹性时程分析| 隐式动力学

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

[NKCTF 2024]web解析

文章目录 my first cms全世界最简单的CTF解法一解法二 my first cms 打开题目在最下面发现是CMS Made Simple&#xff0c;版本为2.2.19 扫一下发现存在后台登陆界面&#xff0c;直接访问 用字典爆破下admin的密码为Admin123 然后直接登录&#xff0c;去漏洞库搜一下其实存在…

Java基于微信小程序的校园请假系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#…

python爬虫基础-----运算符(第三天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

C++ 3.25

思维导图&#xff1a;【有道云笔记】无标题脑图(1).mindmap https://note.youdao.com/s/ELJA6sJ6 定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定…