EasyTweenAnimation constructor

EasyTweenAnimation({
  1. Key? key,
  2. required List<EasyTweenAnimationItem> animSequence,
  3. required Duration duration,
  4. Curve curve = Curves.linear,
  5. required EasyTweenAnimationWidgetBuilder builder,
  6. EasyTweenAnimationOnStatus? onStatus,
  7. Widget? child,
  8. Duration delay = Duration.zero,
  9. bool loop = false,
})

@Desc : 创建一个动画组件,自维护controller,使用简单

参数列表

animSequence 动画分镜序列 duration 动画执行总时长 curve 动画执行曲线,默认线性 builder 构建要使用动画的组件 onStatus 监听动画执行状态回调 child 子组件 delay 延时时间,默认0秒立即执行 loop 是否循环执行

使用示例

EasyTweenAnimation(
  animSequence: [
    EasyTweenAnimationItem(
      animatables: {
        "angle": Tween<double>(begin: 0, end: 1 * pi),
        "color": ColorTween(begin: Colors.blue, end: Colors.blue),
        "width": Tween<double>(begin: 100, end: 100),
      },
      weight: 50.0, // 占总时长的50%,也就是2秒的0%~50%时的动画效果
    ),


    EasyTweenAnimationItem(
      animatables: {
        "color": ColorTween(begin: Colors.blue, end: Colors.red),
        "width": Tween<double>(begin: 100, end: 200),
      },
      weight: 50.0, // 占总时长的50%,也就是2秒的50%~100%时的动画效果
    ),
  ],

  duration: Duration(seconds: 2), // 执行动画总时长
  delay: Duration(milliseconds: 200), // 延时多久执行,默认0秒立即执行
  loop: true, // 是否循环执行动画
  builder: (BuildContext context, CurvedAnimation curvedAnimation, Map<String, Animation> animationMap, AnimationController animationController, Widget child){

    // 从animationMap里取出各个效果的Animation对象
    Animation angle = animationMap["angle"];
    Animation color = animationMap['color'];
    Animation width = animationMap['width'];

    // AnimatedBuilder 里使用 各个效果的Animation对象value即可
    return AnimatedBuilder(animation: curvedAnimation, builder: (context, child){
      return Transform.rotate(
        angle: angle.value,
        child: Container(
          color: color.value,
          width: width.value,
          height: width.value,
        ),
      );
    });
  },
)

@author: 枫儿

Implementation

EasyTweenAnimation({
  Key? key,
  required this.animSequence,
  required this.duration,
  this.curve = Curves.linear,
  required this.builder,
  this.onStatus,
  this.child,
  this.delay = Duration.zero,
  this.loop = false,
}): super(key: key);