📅  最后修改于: 2023-12-03 14:50:10.274000             🧑  作者: Mango
在Dart语言中,有很多可以用来制作各种UI元素和动画效果的库。最常见的是Flutter,它提供了大量的组件和接口来构建美观且高效的应用程序。
要创建一个凸起的按钮形状颤动的动画效果,我们需要使用Flutter中的Animation库。Animation库提供了许多类型的动画控制器,包括Tween、Curve和Interval等。我们可以使用这些控制器来定义我们所需的动画效果。
下面是一个基本的Flutter代码片段,用于创建一个凸起的按钮形状颤动的动画效果:
import 'package:flutter/material.dart';
class ShakingButton extends StatefulWidget {
final VoidCallback onPressed;
const ShakingButton({
Key? key,
required this.onPressed,
}) : super(key: key);
@override
_ShakingButtonState createState() => _ShakingButtonState();
}
class _ShakingButtonState extends State<ShakingButton>
with SingleTickerProviderStateMixin {
late final AnimationController _controller = AnimationController(
vsync: this,
duration: Duration(milliseconds: 600),
)..addListener(() {
setState(() {});
});
late final Animation<double> _animation = Tween<double>(
begin: -10,
end: 10,
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.elasticInOut,
));
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: widget.onPressed,
child: Transform.translate(
offset: Offset(_animation.value, 0),
child: ElevatedButton(
onPressed: widget.onPressed,
child: Text('Press me!'),
),
),
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
}
在这个代码片段中,我们首先定义了一个ShakingButton类,它是一个带有回调参数的无状态的StatefulWidget。在StatefulWidget的_State类中,我们在AnimationController中定义了一个控制器,以控制我们的动画,它从-10到10平移。然后,我们定义了一个Tween来定义动画的开始和结束值,并使用CurvedAnimation将它们组合起来,以使用弹性缓冲运动曲线。最后,我们在build方法中将ElevatedButton包装在一个Transform.translate中,并传递动画值。当我们点击这个按钮时,我们会触发onPressed回调。
这是一个非常基本的Flutter代码片段,用于创建一个凸起的按钮形状颤动的动画效果。我们可以根据自己的需要调整动画效果的时间、缓冲曲线和偏移量,从而创建出各种不同的效果。