📜  凸起的按钮形状颤动 - Dart (1)

📅  最后修改于: 2023-12-03 14:50:10.274000             🧑  作者: Mango

凸起的按钮形状颤动 - Dart

在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代码片段,用于创建一个凸起的按钮形状颤动的动画效果。我们可以根据自己的需要调整动画效果的时间、缓冲曲线和偏移量,从而创建出各种不同的效果。