【Flutter】动画介绍&隐式动画
在Flutter中,动画系统提供了一种创建富有生命力的UI的方法。Flutter中的动画分为两类:显式动画和隐式动画。
显式动画:是那些使用AnimationController或者Tween来创建的动画。开发者需要手动控制动画的每一帧。
隐式动画:是Flutter内置的动画,例如,当一个Widget插入或删除时,Flutter可以自动应用入场动画和出场动画。
隐式动画可以通过AnimatedWidget来实现,AnimatedWidget内部会自动订阅到动画的每一帧。
以下是一个简单的使用AnimatedWidget的例子:
class MyAnimatedWidget extends StatefulWidget {
MyAnimatedWidget({Key key, this.animation}) : super(key: key);
final Animation<double> animation;
@override
_MyAnimatedWidgetState createState() => _MyAnimatedWidgetState();
}
class _MyAnimatedWidgetState extends State<MyAnimatedWidget> {
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: widget.animation,
builder: (BuildContext context, Widget child) {
return Container(
alignment: Alignment.center,
child: Text(
'Animated Widget',
style: TextStyle(
fontSize: widget.animation.value * 20,
color: Colors.black,
),
),
);
},
);
}
}
在这个例子中,我们创建了一个AnimatedBuilder,它会在动画每一帧都重新构建,并且使用widget.animation.value
来动态地改变字体的大小。
隐式动画还可以通过Hero动画实现页面间的转场效果,通过Sliver动画实现列表滚动时的动画效果等。
隐式动画的使用场景多见于列表滚动、导航、以及tab切换等场景。开发者可以通过AnimatedWidget或者AnimatedBuilder来创建自定义的隐式动画。
评论已关闭