EasyTweenAnimation constructor
EasyTweenAnimation({
- Key? key,
- required List<
EasyTweenAnimationItem> animSequence, - required Duration duration,
- Curve curve = Curves.linear,
- required EasyTweenAnimationWidgetBuilder builder,
- EasyTweenAnimationOnStatus? onStatus,
- Widget? child,
- Duration delay = Duration.zero,
- 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);