Flutter 在flatter中,为什么一些动画类需要vsync而其他类不需要';T
在flatter中,某些动画类需要您在构造函数中传递Flutter 在flatter中,为什么一些动画类需要vsync而其他类不需要';T,flutter,flutter-animation,Flutter,Flutter Animation,在flatter中,某些动画类需要您在构造函数中传递vsync,而其他动画类则不需要。例如,AnimatedSize需要vsync动画容器没有 1) 为什么有些动画课程需要它而有些不需要 2) 这与那些具有状态的类(它们自己的内部vsync)有关吗 3) 所有使用vsync的类都可以转换成不使用vsync的类?那么折衷是什么呢?vsync是表示TickerProvider的属性(即,Tick类似于时钟的Tick,这意味着在每个特定的持续时间,TickerProvider将呈现类状态并重新绘制对象
vsync
,而其他动画类则不需要。例如,AnimatedSize
需要vsync<代码>动画容器没有
1) 为什么有些动画课程需要它而有些不需要
2) 这与那些具有状态的类(它们自己的内部vsync)有关吗
3) 所有使用vsync的类都可以转换成不使用vsync的类?那么折衷是什么呢?vsync是表示TickerProvider的属性(即,Tick类似于时钟的Tick,这意味着在每个特定的持续时间,TickerProvider将呈现类状态并重新绘制对象) vsync属性仅在构造函数上是必需的,当我们需要呈现组件或小部件以重新绘制和反映UI时,构造函数需要在每个特定的偏移时间呈现它的类状态 vsync可用于需要某些转换或动画才能重新渲染以绘制不同对象的类
例如:vsync with AnimationController()类将通知我们的应用程序每隔几秒钟重新绘制帧,以生成动画,从而提供更好的用户体验。flatter良好的动画框架 vsync将TickerProvider作为参数,这就是为什么我们使用SingleTickerProviderStateMixin的原因,正如命名的TickerProvider提供的Ticker所描述的那样,TickerProvider提供Ticker,这仅仅意味着它告诉我们的应用程序有关帧更新(或屏幕更新),以便我们的AnimationController可以生成一个新值,我们可以重新绘制动画小部件 TickerProvider通常通过
SingleTickerProviderStateMixin
实现,它是Ticker和外部因素之间的绑定
拥有vsync(TickerProvider)
的主要优点是与控制器一起使用,当小部件不在屏幕上时,控制器可以暂停。如果我们没有这个,那么即使用户看不到屏幕,渲染也会持续执行
controller = AnimationController(
duration: Duration(),
vsync: this,
);
这很可能是
AnimatedSize
的特殊性。由于其行为,它需要创建一个RenderObject
,以计算其子对象的大小。但是SingleTickerProviderMixin
需要一个状态
。