flutter 变大变小动画
时间: 2024-06-11 07:02:33 浏览: 19
可以使用Flutter中的缩放动画`ScaleTransition`来实现控件的变大变小动画效果。具体实现步骤如下所示:
1.在需要实现动画的控件外包裹一个`ScaleTransition`组件。
2.设置`ScaleTransition`组件的`scale`属性值,该属性值表示控件的缩放比例。
3.在需要触发动画的时候调用`ScaleTransition`组件的`controller`对象的`forward()`方法触发动画。
下面是一个简单的示例代码,实现一个圆形控件的变大变小动画:
```dart
class ScaleAnimationWidget extends StatefulWidget {
@override
State<StatefulWidget> createState() => _ScaleAnimationWidgetState();
}
class _ScaleAnimationWidgetState extends State<ScaleAnimationWidget> with SingleTickerProviderStateMixin {
AnimationController _controller; // 动画控制器
Animation<double> _animation; // 动画对象
@override
void initState() {
super.initState();
// 创建动画控制器
_controller = AnimationController(
duration: const Duration(milliseconds: 500), vsync: this);
// 创建动画对象,从1倍放大到2倍
_animation = Tween(begin: 1.0, end: 2.0).animate(_controller)
..addListener(() {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return Center(
child: GestureDetector(
onTap: () {
if (_controller.status == AnimationStatus.completed) {
_controller.reverse(); // 反向播放动画
} else {
_controller.forward(); // 正向播放动画
}
},
child: ScaleTransition(
scale: _animation, // 设置缩放比例
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
color: Colors.blue,
shape: BoxShape.circle,
),
),
),
),
);
}
}
```
在上述代码中,我们创建了一个圆形控件,然后将其包裹在一个`ScaleTransition`组件中。当用户点击该圆形控件时,会根据动画控制器的状态正向或反向播放缩放动画。