美文网首页
Flutter-Animation类

Flutter-Animation类

作者: 阿博聊编程 | 来源:发表于2022-05-31 09:32 被阅读0次
配图来自网络,如侵必删

Flutter组件设置动画的时候,肯定会使用到Animation类,它是核心类。这篇博客分享Animation类相关的知识,希望对看文章的小伙伴有所帮助。

Animation类

Animation是动画核心类,主要保存动画播放过程中的当前插值状态

Animation的储存插值区间是double类型的[0.0,1.0]

Animation类源码

abstract class Animation<T> extends Listenable implements ValueListenable<T> {
  const Animation();

  // 添加动画监听器
  @override
  void addListener(VoidCallback listener);

  // 移除动画监听器
  @override
  void removeListener(VoidCallback listener);

  // 添加动画状态监听器
  void addStatusListener(AnimationStatusListener listener);

  // 移除动画状态监听器
  void removeStatusListener(AnimationStatusListener listener);

  // 获取动画当前状态
  AnimationStatus get status;

  // 获取动画当前的值
  @override
  T get value;

设置对象监听addListener

addListener用于给Animation添加帧监听器,每一帧都会被调用,当帧监听器监听到状态发生改变后会调用setState()来触发视图的重建。情况如下::

  • 当动画的状态值发生变化时,会通知所有通过addListener的监听器。
  • 正在监听动画的state对象会调用自身的setState方法,将自身传入这些监听器的回调函数来通知widget系统需要根据新状态值进行重新创建。

调用方法如下:

animation.addListener(() => setState((){}));

设置状态监听addStatusListener

addStatusListener用于给Animation对象添加动画状态改变监听器,动画开始、结束、正向或反向时会调用状态改变的监听器。情况如下:

  • 当动画的状态发生变化时,会通知所有通过addStatusListener添加的监听器。
  • 动画会从dismissed(动画停止的状态) 开始,表示它处于变化区间的开始点。

调用方法如下:

animation.addStatusListener((status) {});

AnimationStatus

AnimationStatus是一个枚举类,主要保存动画的4种状态,分别是动画停止状态从头到尾执行中状态从尾到头执行中状态动画执行完状态

enum AnimationStatus {
  /// 动画停止状态
  dismissed,

  /// 从头到尾执行中状态
  forward,

  /// `从尾到头执行中状态
  reverse,

  /// 动画执行完状态
  completed,
}

相关文章

网友评论

      本文标题:Flutter-Animation类

      本文链接:https://www.haomeiwen.com/subject/unfzprtx.html