AnimatedPositioned是一个隐式的动画组件,提供动态改变位置的动画组件,用法如下:
1 | var _top = 30.0; |
相关参数:
AnimatedPositioned是一个隐式的动画组件,提供动态改变位置的动画组件,用法如下:
1 | var _top = 30.0; |
相关参数:
Flutter中很多用于动画的控件,这篇文章介绍动画控件AnimatedContainer,我们可以通俗的理解AnimatedContainer是带动画功能的Container,关于Container的详细介绍可以查看Flutter Widgets 之 Container,这篇详细介绍了Container的用法。
AnimatedContainer只需要提供动画开始值和结束值,它就会动起来并不需要我们主动调用setState方法。 变化AnimatedContainer的宽高实现变大的效果,代码如下:
1 | bool click = false; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22AnimatedCrossFade组件让2个组件在切换时出现交叉渐入的效果,因此AnimatedCrossFade需要设置2个子控件、动画时间和显示第几个子控件,用法如下:
AnimatedCrossFade(
duration: Duration(seconds: 1),
crossFadeState:
_showFirst ? CrossFadeState.showFirst : CrossFadeState.showSecond,
firstChild: Container(
height: 150,
width: 150,
alignment: Alignment.center,
decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.blue),
child: Text('first child',style: TextStyle(color: Colors.white),),
),
secondChild: Container(
height: 150,
width: 150,
alignment: Alignment.center,
decoration:
BoxDecoration(shape: BoxShape.rectangle, color: Colors.orange,borderRadius:BorderRadius.circular(20)),
child: Text('second child',style: TextStyle(color: Colors.white),),
),
)
_showFirst参数由一个按钮按住,代码如下:
1 | bool _showFirst = true; |
AnimatedPadding是一个隐式的动画组件,提供动态改变内边距的动画组件,用法如下:
1 | var _padding = 0.0; |
duration参数是动画执行的时间。如果仅仅是构建这样一个组件是不会有动画效果,需要让padding参数发生变化,点击按钮设置新的_padding值:
1 | RaisedButton( |
AnimatedAlign组件方便我们构建位置动画
效果:
代码:
1 |
|
AnimatedOpacity是一个隐式的动画组件,它可以使子组件变的透明,用法如下:
1 | var _opacity = 1.0; |
duration参数是动画执行的时间,opacity参数是透明值,值的范围是0.0-1.0。如果仅仅是构建这样一个组件是不会有动画效果,需要让opacity参数发生变化,点击按钮设置新的opacity值:
1 | RaisedButton( |
效果:
代码:
1 | class GMExampleAlignTransitionTest extends StatefulWidget { |
AnimatedBuilder可以让我们轻松的构建动画控件,下面的案例是让flutter logo图片旋转
效果:
代码如下:
1 | class GMExampleAnimatedBuilderTest extends StatefulWidget { |