XXXTransition
FadeTransition 显隐性
FadeTransition(opacity: animation, child: FlutterLogo(size: 100.0))
ScaleTransition 缩放
ScaleTransition(scale: animation, child: FlutterLogo(size: 100.0))
RotationTransition 旋转
RotationTransition(turns: animation, child: FlutterLogo(size: 100.0))
Transform. XXX
Transform.scale 缩放
Transform.scale(scale: curve.value, child: FlutterLogo(size: 100.0))
Transform.rotate 旋转
Transform.rotate(angle: curve.value * pi, child: FlutterLogo(size: 100.0))
Transform.translate 平移
Transform.translate(offset: Offset(100.0 * curve.value, 0.0), child: FlutterLogo(size: 100.0))
AnimatedXXX
AnimatedOpacity 透明度
AnimatedOpacity(opacity: animation.value, duration: Duration(milliseconds: 2000), child: FlutterLogo(size: 100.0))
核心代码:
class _AnimationPageState extends State<AnimationPage03> with TickerProviderStateMixin {
AnimationController controller;
Animation<double> animation;
CurvedAnimation curve;
bool isForward = false;
@override
void initState() {
super.initState();
controller = AnimationController(
duration: const Duration(milliseconds: 2000), vsync: this);
curve = CurvedAnimation(parent: controller, curve: Curves.fastOutSlowIn);
animation = Tween(begin: 0.0, end: 1.0).animate(controller);
animation.addListener(() {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('Animation Demo'),
),
body: Stack(children: <Widget>[
ListView(children: <Widget>[
Padding(
padding: EdgeInsets.all(5.0),
child: Row(children: <Widget>[
Expanded(
flex: 1, child: Center(child: Text('FadeTransition'))),
Expanded(
flex: 1, child: Center(child: Text('ScaleTransition')))
])),
Row(children: <Widget>[
Expanded(
flex: 1,
child: FadeTransition(
opacity: animation, child: FlutterLogo(size: 100.0))),
Expanded(
flex: 1,
child: ScaleTransition(
scale: animation, child: FlutterLogo(size: 100.0)))
]),
Padding(
padding: EdgeInsets.all(5.0),
child: Row(children: <Widget>[
Expanded(
flex: 1,
child: Center(child: Text('RotationTransition'))),
Expanded(
flex: 1, child: Center(child: Text('AnimatedOpacity')))
])),
Row(children: <Widget>[
Expanded(
flex: 1,
child: RotationTransition(
turns: animation, child: FlutterLogo(size: 100.0))),
Expanded(
flex: 1,
child: AnimatedOpacity(
opacity: animation.value,
duration: Duration(milliseconds: 2000),
child: FlutterLogo(size: 100.0)))
]),
Padding(
padding: EdgeInsets.all(5.0),
child: Row(children: <Widget>[
Expanded(
flex: 1,
child: Center(child: Text('Transform.translate'))),
Expanded(
flex: 1, child: Center(child: Text('Transform.rotate')))
])),
Row(children: <Widget>[
Expanded(
flex: 1,
child: Transform.translate(
offset: Offset(100.0 * curve.value, 0.0),
child: FlutterLogo(size: 100.0))),
Expanded(
flex: 1,
child: Transform.rotate(
angle: curve.value * pi, child: FlutterLogo(size: 100.0)))
]),
Padding(
padding: EdgeInsets.all(5.0),
child: Row(children: <Widget>[
Expanded(
flex: 1, child: Center(child: Text('Transform.scale'))),
Expanded(flex: 1, child: Center(child: Text('Position')))
])),
Row(children: <Widget>[
Expanded(
flex: 1,
child: Transform.scale(
scale: curve.value, child: FlutterLogo(size: 100.0))),
])
]),
posWid()
]),
floatingActionButton: new FloatingActionButton(
tooltip: 'Animation',
child: new Icon(Icons.lightbulb_outline),
onPressed: () {
isForward ? controller.reverse() : controller.forward();
isForward = !isForward;
}));
}
Widget posWid() {
return Positioned(
bottom: 16 + 314 * animation.value,
right: 16 + 84 * animation.value,
child: Container(child: FlutterLogo(size: 100.0)));
}
}
相关推荐
Flutter的一个简单的动画径向菜单部件
flutter快速学习项目源码、快速集成企业ERP、OA、HR等信息平台。 flutter初学快速入门、flutter毕业设计, ...自定义简易日历 曲线图及饼状图 模块化路由管理 更多Demo(水波纹动画、刮刮卡、lottie) 更多的细节优化
预先构建的Flutter圆形动画师可以适合您的新个人资料视图或您的任何其他小部件widget_circular_animator受此乐透动画启发的新Flutter小部件动画师。 [https://lottiefiles.com/3619-profile]功能动态动画该小部件可...
Flutter里面是原生支持路由的。Flutter的framework提供了路由跳转的实现。我们可以直接使用这些功能。 Flutter路由介绍 Flutter里面有路由支持所有的路由场景,push、pop页面,页面间的参数传递等等。flutter里
Flutter 入门与进阶本书在持续更新中,有许多章节没有完善,请客位看官老爷不要着急。Flutter入门与进阶入门第二章 基础组件2.1: widget 简介2.2:状态管理2.3:文本和样式2.4:按钮2.5:图片和Icon2.6:单选和复选...
:dashing_away: :rocket:用一种简单的方式,声明式描述使用Flutter的动画 前言 据说Flutter动画的时候,我们一般想到的是什么? 如果您照着Flutter文档手册看完,脑子里肯定一堆Tween,AnimationController,...
在上一篇文章:Flutter进阶—实现动画效果(一)的最后,我们说到需要一个处理程序混乱的概念。在这一篇文章中,我们会引入补间,它是构建动画代码的一个非常简单的概念,主要作用是用面向对象的方法替代之前面向...
该项目包含了绝大部分常用的Flutter组件的使用,包含常用的按钮,对话框,以及各种简单动画的实现等等,能帮助新人快速的入门学习,并了解Flutter的强大
Flutter项目的一组简单但非常可定制的加载动画。 安装 将以下内容添加到您的pubspec.yaml文件中: ... dependencies : ... loading_animations : " ^2.1.0 " ... 然后将文件导入到您的项目中: import '...
fcharts:用于Flutter.使用简单直观的API创建漂亮,响应式的动画图表
借助Animator小部件,使动画像Flutter中最简单的小部件一样简单, 允许您控制(向前,停止,反向),重新配置,重置和重新启动按钮或事件回调中的动画。 动画师: 使用一个小部件Animator ,您可以在Flutter中...
一个新的Flutter项目,显示动画bettwen选项卡。 入门 该项目是Flutter应用程序的起点。 如果这是您的第一个Flutter项目,那么有一些资源可以帮助您入门: 要获得Flutter入门方面的帮助,请查看我们的,其中提供了...
一个带有泰迪的简单动画登录UI带有泰迪的动画登录UI:bear:使用的包:sparkles:flare_flutter如何运行首先克隆存储库:git clone https://github.com/KauaLimaMartins/Teddy-Animated-Login-UI.git在存储库路径中:...
Zerker是一个轻巧而功能强大的扑动画布图形动画库什么是Zerker ...同时,您可以使用Zerker创建许多简单的游戏。 Zerker包含精灵,滚动背景和地图集等元素,可轻松使用它们创建游戏世界。 有关Zerker的更多详细文档
一个简单的插件,可将小部件捕获为图像。 该插件将您的小部件包装在 入门 这个方便的插件可用于捕获所有小部件,包括全屏屏幕截图和单个小部件,例如Text()。 创建截图控制器的实例 class _MyHomePageState ...
标题为底部导航栏美观,干净,简单的底部导航栏,单击时具有流畅的动画。 此程序包可高度自定义,并带有标题的底部导航栏。美观,干净,简单的底部导航栏,单击时具有流畅的动画效果。 此程序包可高度自定义,有关更...
本示例说明如何以最简单的方式显示Lottie动画。 Lottie小部件将加载json文件并无限期地运行动画。 import 'package:flutter/material.dart' ; import 'package:lottie/lottie.dart' ; void main () => runApp ( ...
使用Flutter强大的动画,甚至随便一个简单的控件也可以完成。EasyRefresh的目标是为Flutter打造一个强大,稳定,成熟的下拉刷新框架。 Web版本移步: Demo: | 特点功能: 支持绝大多数Widget 支持自定义并且已经集成...
显示浮动自定义弹出窗口小部件的一种简单方法。 截屏 例子 截屏 例子 您可以通过以下命令运行示例。 cd ./example flutter create . flutter run 入门 dependencies : easy_popup : ^1.0.0 或者 dependencies...