当前位置: 首页 > news >正文

flutter常用动画

Flutter 动画基础概念

术语解释
Animation表示动画的值,通常是一个 double (0.0 ~ 1.0) 或其他数值。
AnimationController管理动画的时间进度和状态。需要 Ticker (vsync) 来驱动。
Tween定义动画的取值范围,如从 0.0 到 1.0,从红色到蓝色。
Curve定义动画的加速度曲线,如线性、加速、减速、弹性等。
AnimatedWidget封装了动画的 Widget,如 AnimatedBuilderAnimatedContainer
AnimatedBuilder监听动画状态并重建 UI。
setState手动刷新 UI,需要与 AnimationController 配合使用。

常用动画类型

类型特点示例
隐式动画 (Implicit Animation)简单、易用,适合简单场景AnimatedContainerAnimatedOpacityAnimatedAlign
显式动画 (Explicit Animation)灵活、强大,适合复杂场景AnimationController + Tween + AnimatedBuilder
交织动画 (TweenSequence)多段组合动画,控制更复杂的曲线多阶段颜色、位置、缩放的渐变
物理动画 (Physics-based)仿真效果,如弹簧、惯性SpringSimulationFrictionSimulation
Hero 动画页面跳转时的共享元素动画Hero 小部件

示例代码

1️⃣ 隐式动画 - AnimatedContainer

class MyImplicitAnimation extends StatefulWidget {@override_MyImplicitAnimationState createState() => _MyImplicitAnimationState();
}class _MyImplicitAnimationState extends State<MyImplicitAnimation> {double _size = 100;@overrideWidget build(BuildContext context) {return Center(child: GestureDetector(onTap: () {setState(() {_size = _size == 100 ? 200 : 100;});},child: AnimatedContainer(duration: Duration(seconds: 1),width: _size,height: _size,color: Colors.blue,curve: Curves.easeInOut,),),);}
}

2️⃣ 显式动画 - AnimationController + Tween

class MyExplicitAnimation extends StatefulWidget {@override_MyExplicitAnimationState createState() => _MyExplicitAnimationState();
}class _MyExplicitAnimationState extends State<MyExplicitAnimation> with SingleTickerProviderStateMixin {late AnimationController _controller;late Animation<double> _animation;@overridevoid initState() {super.initState();_controller = AnimationController(duration: Duration(seconds: 2),vsync: this,)..repeat(reverse: true);_animation = Tween<double>(begin: 100, end: 200).animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut),);}@overridevoid dispose() {_controller.dispose();super.dispose();}@overrideWidget build(BuildContext context) {return Center(child: AnimatedBuilder(animation: _animation,builder: (context, child) {return Container(width: _animation.value,height: _animation.value,color: Colors.red,);},),);}
}

相关文章:

  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • 直角坐标系下 dxdy 微小矩形面积
  • 服务器关机
  • element-plus bug整理
  • Spring boot 策略模式
  • AI重构SEO关键词精准定位
  • 唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!
  • 计算机网络 - 关于IP相关计算题
  • C++23 <spanstream>:基于 std::span 的高效字符串流处理
  • 如何通过创新科技手段打造美术馆展厅互动体验,提升观众沉浸感?
  • 变色龙Ultra编译指南:从零开始
  • C#与 Prism 框架:构建模块化的 WPF 应用程序
  • C语言进阶--数据的存储
  • WSL中ubuntu通过Windows带代理访问github
  • Vue 实例生命周期
  • YOLOv5 详解:从原理到实战的全方位解析
  • DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集
  • mongodb集群之副本集
  • WPF学习
  • 博图SCL基础知识-寻址调用及新建SCL
  • 广州网站建设开发公司/双11销量数据
  • 域名停靠app/成都seo公司
  • ecshop手机网站/室内设计培训哪个机构比较好
  • 无锡做网站优化价格/天津百度推广排名
  • 建立动态网站开发目的/一个产品营销策划方案
  • 我国的课程一般通过/seo外包公司如何优化