在日常的Flutter
开发当中,肯定会出现Flutter SDK
隐式动画组件满足不了产品需求的情况。如果我们要自定义隐式动画的时候,会涉及到ImplicitlyAnimatedWidget
和AnimatedWidgetBaseState
两个类,下面来分享相关的知识,希望对你有所帮助。
ImplicitlyAnimatedWidget
ImplicitlyAnimatedWidget
类,是所有隐式动画组件的父类,属于一个有状态的组件,构造函数需要有curve
和duration
两个参数,源码如下:
const ImplicitlyAnimatedWidget({
Key? key,
this.curve = Curves.linear,
required this.duration,
this.onEnd,
}) : assert(curve != null),
assert(duration != null),
super(key: key);
AnimatedWidgetBaseState
AnimatedWidgetBaseState
是ImplicitlyAnimatedWidget
对应的状态类,我们在自定义隐式动画组件的时候,对应的State类
必须继承AnimatedWidgetBaseState
这个类。源码如下:
abstract class AnimatedWidgetBaseState<T extends ImplicitlyAnimatedWidget> extends ImplicitlyAnimatedWidgetState<T> {
@override
void initState() {
super.initState();
controller.addListener(_handleAnimationChanged);
}
void _handleAnimationChanged() {
setState(() { /* The animation ticked. Rebuild with new animation value */ });
}
}
网友评论